鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ( c7 c) f5 H( a3 m! @

$ Y4 ~" M: w; j9 |6 j2 Sclass CA4 s& ?9 q$ c% P1 Q: l
{; t/ ~3 |) |" w
public:
+ c( t7 g0 M8 z& ~        CA();8 C1 j- y, W& D! H% }1 [- g
        CA(CA&);, Y. g2 K; ^; ?, h- J+ r
        CA(int ,int );" H2 g* I8 u4 X$ j) p7 n
        ~CA();
# s3 s( E: ]2 B; C: O' g5 ]  I" I) P4 w        void print();. t  Q  i4 A) V3 l! Y. |* X
9 e8 j( Y+ [: I. v+ [" z% g
private:, Y) P9 {% D& B5 F" y3 l$ }
        int i;% y8 N  n7 Q# Y
        int j;0 C6 X# e+ H4 j2 j
};
# V$ `# {$ F: z& m5 R
" a! H8 \0 b# d+ z1 iCA::CA()2 H' p( l1 I/ w" t
{* I" U$ b  |9 J* D( q) K
}- _1 o! p+ t& g2 p. a: a

% e7 o" {) d3 T( e8 uCA::CA(CA&one): e2 e+ q+ Z1 E( J$ B( r
{, R( `/ M+ c6 {
        cout<<"调用复制构造函数"<<endl;
8 u0 l" }; Y) y- ]% O, J        this->i=one.i;5 k2 Q% V9 M, U; h, R4 f
        this->j=one.j;/ Z$ v) E# F4 g4 E$ p
}# d5 K6 t# n5 d8 }3 ?7 r% M8 J
# f2 ~, e8 k$ o2 M
CA::CA(int m,int n). p8 D/ j. [' e
{
$ R' M4 C' [6 X6 z: E3 O        i=m;4 W, m, t# z" Z# Y, F
        j=n;5 {8 u( ~1 e3 N9 L' S
}+ v7 a8 n( M6 b2 y9 ~

( `8 a4 R! A& ]2 M3 ~4 uvoid CA::print()
9 z4 o  D, \5 n1 R+ q# t{
% w: I/ ?$ Q( G" g2 ?& @        cout<<i<<endl<<j<<endl;% N& N6 A! K* j- \. U/ F$ e( Z3 L
}
- K7 \3 D! H' R5 E
8 A& O/ X2 u7 J" e$ nCA::~CA()# h$ O! Y3 E' c
{# o; m5 u' M6 g8 l: u
}
; _: B8 F+ ~1 ]& m& P7 k, }" {" X
8 D- A, K. \! t% Z7 I: h#include <iostream>" f' ^, N0 j4 J+ g, f
using namespace std;
3 O9 r9 v" G; S& Q#include "复制构造函数工作原理.h"5 J  a+ }# \( F% D; X
int main(void){        2 a& ~: X& _0 q* l, L
CA a(2,3);        
  D2 C9 w4 ^; `6 ]8 J% \a.print();       , w9 _8 B  V: R6 t
CA b(a);        
1 V% F! u: c/ Sb.print();1 r: _2 B$ y; Y
       + y1 N6 W! X9 _4 i. v, O$ A
return 0;  n: x& u% F6 s6 ]; e
}
; W" R8 ?5 C) I7 e% p
6 m9 O+ K$ O$ Y% |% ?% }. K9 N4 ?4 u
# X% F. ~+ m1 H! k

# `( U# M; X1 x! [( T: S  H# r% k( ~
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:- W- W& n2 b" ^% _" r
1> 初始赋值时:CA b = a;. R% Z7 t2 T! R4 W5 [4 e% A& }1 y- T. |
2> 按值传参时:void myfun(CA ca);+ }1 V/ @% Y- O- ^8 k3 W
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
  |0 G4 `5 C/ x- U1 z0 t
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-29 05:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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