鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 # X1 B% u1 p, h8 |$ W8 F- z  p

. d) `" w( h6 r  O! ?  P4 n! yclass CA
. B/ K* U, j  N0 c8 ]" v% E. r2 P{. |$ s1 h; D6 u3 |8 d; N
public:' G9 y4 L3 e2 w$ E1 e
        CA();; N: _2 E7 n$ K0 g& I; r9 A. F
        CA(CA&);8 M/ M  R, n8 F6 e' s6 ?
        CA(int ,int );5 ?+ _; y) C  ?; j: p9 K/ r
        ~CA();
8 e# ]6 H& [$ m  v7 z/ {        void print();
. O( E. t/ G" A/ x
, s1 W' l  E  h' I5 j2 ^private:
% \6 _. @0 H- Q2 ?0 u) ^* z        int i;& x$ ~+ u8 |2 [$ F! g) ?  N
        int j;- {. S5 S. `! b; U* U! W
};
/ r, T4 i) h0 J. b1 {% O! c; `, I) q8 X  L6 i9 W2 Y
CA::CA()
! l( Z. [( R. a3 B/ B! c+ U{2 K. |2 D# E! o
}
* N" C$ a+ @( I0 p: j+ @/ ]& s( t( L5 X9 u1 V5 ^1 v
CA::CA(CA&one)! D% w# K: e2 E' j2 \1 B
{& J, Z& O8 g+ |5 Q3 U
        cout<<"调用复制构造函数"<<endl;8 f% |! I5 D0 n8 M+ V' r0 T
        this->i=one.i;% ~3 I$ d6 P- z: ^. H4 ~
        this->j=one.j;" M9 C. i( m  L% z7 }4 G4 J
}& b6 t% Q& x9 f' H; i

& c8 [  q. U8 R% y; Q7 N; QCA::CA(int m,int n)9 I$ H( O' ~1 z9 X
{  N+ l  s( R. |7 |" w+ n
        i=m;
9 k2 {$ H4 t4 ?5 T2 s        j=n;
0 ?* {; m4 j6 c}6 v$ x+ P9 `; w' Y* r0 P2 _* v( j9 D0 ~
  {3 `' Y" h. V
void CA::print()2 a& x" D, J$ m' G5 y
{4 w* d) k5 g4 R$ b7 Y% h
        cout<<i<<endl<<j<<endl;
! |# m: n; x8 n) X. ?3 A7 p* z}+ w+ x) g% a# \: t3 `  L1 I3 o- q

& j3 b4 e) E. n8 o, {CA::~CA()
5 ]& N2 O( b* O( p+ {  A{/ n- _$ r# z1 \$ U( ]( G
}+ B: ]( W- K3 |# @# j% J; |3 r2 S: ^

& B" r! H# w5 R7 _! I  ]/ x#include <iostream>
1 j) S% O& f; F$ e3 fusing namespace std;3 e3 i4 [6 l5 i& A
#include "复制构造函数工作原理.h"
, T/ B, m! M4 i( V$ Z" Fint main(void){        
) K$ u5 {) D  B& DCA a(2,3);        / ^! {- z" P% b) I' ]% D4 g  S& P
a.print();      
. |2 c- h* ~7 k1 ?5 I4 J" p CA b(a);        
8 h1 ^  D! l% K8 }8 [6 [) b6 j  Ab.print();; s4 A1 I! C6 ^: L! ~) ?' g0 V) x
       ' ?1 N, n- w0 T$ S
return 0;
2 r8 J. c3 g. W4 X1 p1 P}! B$ X, L0 S2 T" N* \

$ B5 X5 x' K0 P) ?& n, A' h: v; ^9 P# H2 W

" a/ Y" X: R2 i- s9 f
! p# E6 c% e4 b. f6 _
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:7 }0 D8 t: i9 F% ?' Y
1> 初始赋值时:CA b = a;
7 W8 E1 [3 f% J3 x' d5 @: e2 C$ s2> 按值传参时:void myfun(CA ca);
, @* t8 B  z8 G8 I3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
+ o) o/ F+ U0 z( c8 b2 Y( V8 p2 \复制构造函数在以下几种情况下调用:& y) C) A0 S$ c6 c
1> 初始赋值时:CA b = a;/ V  a* h5 v: f- o. W; c
2> 按值传参时:void myfun(CA ca);
7 n, N  S; B3 A; ^! ?: i0 I: O
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-26 00:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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