鱼C论坛

 找回密码
 立即注册
查看: 2943|回复: 2

[C++个人笔记] 57.复制构造函数工作原理

[复制链接]
发表于 2013-3-21 09:14:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
% l# g0 D' j& o
' \" L3 R" j* v. N1 X: yclass CA
9 s" w: G* y! v! a$ J{& \3 \7 M% }8 r; {1 \: u1 N* F
public:, q! i! T* Z' t( W$ x% Q
        CA();
' d. |( |$ |( Y3 v7 C- T# k& w        CA(CA&);0 H! N1 {7 s8 G/ B- v: K; c
        CA(int ,int );
1 K' i6 e  k/ L" i& G        ~CA();
( V6 a* ]1 T4 h% h  W1 [        void print();
+ j# t( i0 L% V- W2 W; v8 x( v) v9 E
private:
% J, q/ C+ L- r        int i;0 _8 X. ^) C4 F8 _" i8 {
        int j;4 ~+ w" T7 `2 Y9 l
};
8 [6 O) v7 O% n3 E8 d) i, C1 F" U! X) N
CA::CA()
( p) ?( ?% J6 ?- x: l7 }* Y{
% T: k2 A" a% W# M4 q}% G8 b2 s9 T3 W6 Y$ k+ s) B7 o% v  ?

1 e* b/ q! D$ x- F. x6 tCA::CA(CA&one)2 i% K2 c9 Y" L+ J" d/ h1 i
{
( N1 D. L; c/ x; Y% W- j* ~% @        cout<<"调用复制构造函数"<<endl;
, b7 o. i' x7 J* p        this->i=one.i;
/ G. r/ o  j) d/ e# c7 m        this->j=one.j;
" C6 m. n8 q- @5 V; |" A) A}& P9 K# ?2 G7 g$ S

4 J' T) G) I, _CA::CA(int m,int n)
0 S. A- ]& x9 `  C& |$ `{# _  V) p# m- k$ R5 p' C! t+ T# T
        i=m;
! H6 b, V6 o! M, r5 S        j=n;+ w1 y1 a* A! v
}
, l7 a6 n2 m) ~1 _- h( I4 n$ M  k  {% c: s0 @6 i! j0 R2 @! X, N5 U2 g
void CA::print()" d/ K' J- x2 g% x/ Z2 t
{( O0 U2 x( I' k
        cout<<i<<endl<<j<<endl;
- Q- D6 i, u9 n& k4 o}
& g3 g/ B7 D0 V" o; i# [! u+ a9 s2 a- m. `; c% M7 b, B
CA::~CA()
2 k0 J# s3 x$ Y2 _" _& s{; n* f) w% [5 m5 p" W1 M! a
}% w4 @7 [  H, l' B
$ g* x) W# w3 v* x1 Q
#include <iostream>3 k% h& n! ~' i, z  J6 q6 P
using namespace std;& {. j  C0 [6 }; K
#include "复制构造函数工作原理.h"
) @" Z3 ]9 E$ }# G. j# U! \4 G. {int main(void){        % R# _, S9 h5 ~' ]1 M: h$ }2 b6 N
CA a(2,3);        8 @' z% J, Y7 j5 h8 \) ~
a.print();       : W  l+ M1 M" Y8 k8 t/ L
CA b(a);        
% l7 H3 F6 Q2 s* N0 \b.print();
# B- u% Q- x. F       ' y5 k6 j) E# B/ v$ r
return 0;
4 p) I3 y8 z0 U9 H4 v3 v}
; J$ G/ i/ T5 ?) ?3 T! ^
. B" F( |& _( {$ m# _$ V& w- T0 F. i3 }8 |6 F

* [- A. H) n4 C$ L2 q& Z5 D* J6 Y7 ?* P" }! l
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:' i' K$ ?( D% v: J0 f" D
1> 初始赋值时:CA b = a;
. E* Q$ R. w8 i1 @- M: `- w2> 按值传参时:void myfun(CA ca);! A. b& E6 V& v% \/ _
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
- _6 u2 y  ?. |0 d$ s复制构造函数在以下几种情况下调用:
6 U% Y. U4 u/ @; [; p6 Z1> 初始赋值时:CA b = a;; D" J4 `4 g3 Q7 ^' j7 ~6 X
2> 按值传参时:void myfun(CA ca);

1 r  q+ m" U1 ^7 b3 z第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-21 17:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表