鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
2 N5 a  ^- G" |: e! r" u8 \
; _2 O' U, _/ }2 Cclass CA
' P/ [$ a) e2 v! p1 V{
( `2 H! t6 x$ h$ z$ Qpublic:
" D# Q, j' t! l+ @% V8 M        CA();
4 ]: w6 m* T9 r" U% N+ j$ V        CA(CA&);
5 Y) V6 ?" _+ _& R( p        CA(int ,int );: l4 J" f) j1 _8 x: X( {
        ~CA();7 M! J1 r. X( s3 F$ j
        void print();) ?- n+ `' f, A- N# C0 l' z  k, w

8 E. Q, _7 n% O! k2 Zprivate:; r% C# k7 a, Y" [9 z- e
        int i;
  x6 s1 w5 `' k        int j;
; M* E9 E# v. K1 [) M};! d# s9 }9 [; ^/ L% E9 e1 f
( O  W1 y- Y8 A. A, X: G# \
CA::CA()
# f2 c" t/ w; t1 z* w4 T{( `; C/ P! G. Q2 l6 u( A4 r
}
- Y9 m: r' Y1 ?/ x7 M  b) X! |/ W+ i0 Y% I2 e) v0 r( S
CA::CA(CA&one)
: o3 b7 {0 ^9 A5 K! p) n4 p- z{
; w: W6 V9 }% a  ?, a: f        cout<<"调用复制构造函数"<<endl;
& `0 b3 g, P7 R6 e: T' |0 B        this->i=one.i;- \: ]' _1 B, ], j. q5 ?/ a) R
        this->j=one.j;
6 Q4 P7 I/ n7 X6 w) R7 S; s' @$ i}% a: y) j- P" {# t

2 |8 J  @  ~4 pCA::CA(int m,int n)( y9 V* H: f. x) z& M& x2 J
{/ b/ V* y+ K! i
        i=m;4 C+ k( c5 R) y; ?
        j=n;
2 |  J: ~+ b; K6 `& X}
, t9 p5 R* u2 f% T* r  G  h  ]1 z  T# ?+ ~3 t
void CA::print()
9 j7 l. H9 E- y! j# B7 a3 D{+ s& h) s+ Y+ `# T4 [% d
        cout<<i<<endl<<j<<endl;
: G$ M: I  V1 a6 h' M; T: u) v}- L1 H8 |. B: r4 P* E, p  k
% N3 m) r3 ?$ x' _1 p
CA::~CA()7 F& |, W7 y6 Z1 \3 A9 B
{: v+ N3 I9 R7 f: d# s. t. R
}4 W( k  a! u3 b

9 `$ s" V5 c& O* ?- f8 ^#include <iostream>
" q5 [" y) E7 Yusing namespace std;
! l" ^! ~$ Z& o  g$ U$ ]#include "复制构造函数工作原理.h"* ]! w6 F# a8 b& C. `7 }
int main(void){        # {6 y* o$ b* |0 A" y
CA a(2,3);        / A1 M9 Z6 ~0 b; z  ], X
a.print();       2 E% i2 x3 w& G! [1 s
CA b(a);        % u/ I4 Q+ ~7 y+ m; Z5 j2 k+ _& ?
b.print();
4 Y5 _/ o. H' i+ T) l      
( W7 L# g: A+ b3 p/ J8 h( a  r; A return 0;
- G; u: C$ ~0 J}3 {; r! F* Q# s$ D  u2 s
4 b' [& v* M1 V) G! Y" S
1 @3 d5 N7 u/ e9 D! l
0 X2 ~  |. ?: r8 h
7 G. u! j% k' o7 v1 I
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
, @# @) B; X( V1> 初始赋值时:CA b = a;" s& ~4 T! G+ n$ E+ y' n7 z
2> 按值传参时:void myfun(CA ca);
& ~; n7 M, `! ]8 S, y) T: p3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 4 r2 t4 B! ^" N4 S
复制构造函数在以下几种情况下调用:! g6 W5 I7 |2 w3 \$ v7 k
1> 初始赋值时:CA b = a;$ f3 }+ _9 v. I9 g% g* R
2> 按值传参时:void myfun(CA ca);
1 X! \& D  V/ M5 W1 \% x! Z. g
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-18 15:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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