鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑   ]3 X$ j+ S; c- D
" [% [0 t( f6 k3 X+ P
class CA
/ @# B+ |; E$ L* W2 r* G: R{
: ^3 g1 r* o  V' g+ Q3 J6 K6 Lpublic:
2 ~7 \6 A4 Z3 o! t" S- E* f2 z        CA();
. G# i  I5 s  U; D* q! m9 N6 v        CA(CA&);
" T! N* `7 H" X) F5 w( S/ `9 }3 w7 Z* A        CA(int ,int );
. j9 R# t: C) G$ c7 ?3 H2 E0 f        ~CA();# _8 B/ E$ b9 I( J
        void print();$ D& H$ L) c+ q" q

8 R1 C: s2 @5 B$ M2 nprivate:
1 f$ j4 y2 w* E- ]" M  T) Z1 I        int i;
6 a8 Q7 X% s# t) {        int j;
, R# Q# n) F' b/ A, Z$ I};
# T1 r4 I0 M5 y6 q! C  ]& i/ j# g2 R3 {; j3 n: L" o% E
CA::CA()* Z) h# _; |0 W7 R+ J! V/ N4 O3 b
{
8 }6 i* h# d; K6 d7 a}
# q3 Z6 |. k6 x+ z1 k
  o/ P3 q8 Z1 C$ X3 b& lCA::CA(CA&one)) ], m2 w  d& L4 P
{
3 L4 x* [: a6 g( _( |        cout<<"调用复制构造函数"<<endl;
8 c- b0 o4 c5 T1 Z4 F  B7 m3 }        this->i=one.i;
: }' q) t) e5 s+ }        this->j=one.j;4 {: H, U7 h$ [9 I" n. F. T
}/ a; t3 X% X1 S8 g
& f, {: z7 k1 t! ?4 R, T
CA::CA(int m,int n)
* Z" o; C. `2 _9 O9 P4 P$ j; g{2 {( [, Z1 H$ W% S: a
        i=m;
  I9 g: s7 |: C: v, H/ c  v        j=n;" R! f4 w8 W  `0 ]
}
0 b+ `0 A' J' j% N; V- ]+ Z; {+ @! y
2 d+ b0 w: [$ H( s1 k( W5 i) Ovoid CA::print()" E/ r$ }$ w) p
{
1 }9 R+ {4 `& k        cout<<i<<endl<<j<<endl;& X5 W# J( |3 u
}) j! V0 `1 u# X1 {
& [1 f& a) g5 X# v$ P3 B- y; u. ^
CA::~CA()/ p' W- d- l, A- ~$ f
{
, |5 _: {  x9 Y/ A}$ A* \" I+ @( P5 R% k

1 Q  ]% [7 ^3 Y8 Q' b  o#include <iostream>
7 X9 E8 ]) @  m# X! Vusing namespace std;
3 X$ Q+ q# d0 g' o" k#include "复制构造函数工作原理.h"
8 H. Q! B; [4 S, ^: t; {$ tint main(void){        0 C1 ^' K. q7 L: A6 u
CA a(2,3);        
+ ~& D9 ^+ x1 ^) j$ ta.print();       9 X$ p! ~8 n- M9 x6 ?8 k  T! D' j
CA b(a);        $ R, _+ L+ _6 [, j8 S* L5 D
b.print();* a7 A* m" o$ E* f
       ; C4 S  \9 f# q, @- M0 D" G
return 0;' ~1 i( E/ ^9 J: y+ G; `" B2 ^6 \
}
& g2 ~- `8 H3 O8 a6 V: p1 s6 y

0 t% r; J, \1 I/ t) M; h
: K# B! Z# F9 a: Y. O( q/ e% I7 l( F7 S% g/ n; J
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
( F: [5 q: ^- R& ~# b: k1> 初始赋值时:CA b = a;
& ]; Z- w4 |9 G: n1 D6 e5 l2 m; {2> 按值传参时:void myfun(CA ca);
1 x0 l5 W( C7 o3 V1 t3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
8 T; p9 Y5 q" u6 @4 B1 }( F复制构造函数在以下几种情况下调用:
1 a/ l. p% h5 K" c" W5 K1> 初始赋值时:CA b = a;& v5 ~5 o; ]. v" L) K
2> 按值传参时:void myfun(CA ca);

8 b* x+ [  Y" l7 Z/ p7 z* v* v7 Y第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-6 08:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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