鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 + q9 t8 w. `$ [: I! L& S

- X& q" g" w7 t! F- b- {class CA
7 G. u$ L. M. v, z. C{
; s5 c0 v2 _6 r/ Q% l8 }public:8 Z' z9 R/ K7 M. G- \
        CA();& I  T6 s) N3 X- }; w
        CA(CA&);
8 U8 i; a3 }$ ^/ p4 t' x! L        CA(int ,int );
* o2 l0 k. w" G5 }9 [8 f        ~CA();
7 H$ y" C5 {+ S0 E# W        void print();& I$ Z8 j, e" }' U* c: M
' s& B: S" d' |- l6 Q% |: q
private:6 |6 p0 ~# P1 F0 K
        int i;6 _" I) I: c; I2 J
        int j;& [# m. q1 ]# V
};( b: y1 H* I% ^4 B. `
, m0 ]# O3 N8 d1 Y
CA::CA()# s3 Z! N8 r9 i# m* M( |; K7 w
{
9 ?: D5 E$ `# U1 I8 Z; S}$ ~% j9 T6 A+ H7 O
+ x5 ?7 h8 f5 D5 R* j4 K7 @
CA::CA(CA&one)
! N4 K! w3 X( d+ ~! H( [6 b/ b{7 N  [: w# ^1 V+ x! G0 }
        cout<<"调用复制构造函数"<<endl;6 k- M4 b3 o, y2 X3 n; Q
        this->i=one.i;" ]! B6 Q/ Q7 L1 V6 j
        this->j=one.j;$ k/ m$ q1 j9 [! \1 Q' ~0 {
}
9 s: n! ^* g+ _' S+ h0 ]: m$ N5 ]
, J1 \0 K0 W5 c  b. S& WCA::CA(int m,int n)
) e% C: H+ o& j5 w2 C{
" {* B( ]6 F* x9 M- f        i=m;
2 T6 J( I$ H  o3 |) O1 h9 }        j=n;
* @! ^7 l; N$ M& p9 A& K: o}* a; j' O: n+ H1 S& |
) L9 i2 c. ^1 Q5 ~% X2 v% ]. [0 ?6 C
void CA::print()/ Z* R- r* Z" P4 P8 ~$ G4 W
{
; _' j1 T% V. u% N) d) K        cout<<i<<endl<<j<<endl;
; r$ @" o" S: a% U}* ?8 M0 l* J8 _/ T* z; _0 Z) }

1 l$ k4 A7 g1 n5 G% g; ZCA::~CA()( T. z! R/ S4 C& L1 d. Q% x6 Y+ P
{
$ G$ `; k+ T1 k' f- K+ D  ]( Y% M}3 [( ^# q: \! s/ v" K+ z/ y

# ?% r+ Q, V6 t, K% V! G0 b#include <iostream>
* F' m1 H" x1 |. zusing namespace std;/ e/ Q7 y% F# W0 q
#include "复制构造函数工作原理.h"3 @; `7 o# ]0 B& D1 L
int main(void){        
% l0 d  i' a$ U4 a# v* k& sCA a(2,3);          U  z0 H. b& d% j0 j1 B
a.print();       ; T# x* K" H/ M/ h
CA b(a);        * C1 M8 S1 I  J$ {1 r2 |3 i
b.print();/ j$ V# R/ a: J/ M! Q( C
      
2 L, K- @. m1 c  O. T4 U return 0;6 m5 M1 G7 J5 ?; O3 H+ o
}
) t( e/ f% o4 r6 W+ \# G
7 A. b. g4 e5 [& J; Y/ _9 b
  }0 U+ _) Y: x* B( M' r9 g. l6 t( u$ U

" V; Z2 o5 q; @: m0 |: n
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
& C1 e) X6 }7 Z; @1> 初始赋值时:CA b = a;1 M/ Y. O  P- U; o8 f2 [
2> 按值传参时:void myfun(CA ca);
6 h! [7 o! e* o4 X- D  G  ?3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 0 _1 ]* x4 M* _1 ~4 r0 w
复制构造函数在以下几种情况下调用:9 }% c  v* W  b; c- S7 Z1 i% z3 A
1> 初始赋值时:CA b = a;
$ m) y& ]+ k5 S+ G) Z2> 按值传参时:void myfun(CA ca);

. r" q, z% P; L6 u1 c第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-8 20:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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