鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 * ?, ~9 }$ t; C& h& [% T8 b
4 n& e: x$ k  x& T" s) f8 p
class CA
) F' V7 \2 Y4 Q+ u{- V9 X; k# A7 a* a6 T+ d* B
public:
$ V$ s( Z3 @; T% ^% a8 g4 B        CA();
! a) \0 O* D% y8 d( a" g        CA(CA&);
- Z& u; T1 z3 p) \, a        CA(int ,int );( i5 _$ ~4 C2 Z( x$ w* u
        ~CA();/ z- V' M! g! _
        void print();8 P% {, c7 N! G" A: B

) Y& _- }4 n' d9 f6 G4 M0 _& ]8 Pprivate:
* S% v* Z6 {% D+ r        int i;
# w) r$ @1 c' C8 I! z& e        int j;
% g/ N% y8 m7 Y8 R; B) w. a};
7 ]# L, m+ @2 G9 I0 |. e3 L% w0 _* q, `/ S: X
CA::CA()
( N2 M) b2 Q6 u7 ?" k. |. o! g  ]- L' H{; z& ^" S: y, k/ Q9 i, N  Q
}) _; d3 c+ K, ]# X4 T: \

9 ?) D% q/ M2 i. {CA::CA(CA&one)
* s3 m8 I7 ^/ {. t# r4 i{7 {6 ?4 x- `. D5 R$ g2 C/ \
        cout<<"调用复制构造函数"<<endl;
9 O+ {* |; R3 q! b  T        this->i=one.i;' Z& _2 n3 b7 ?! C6 W+ [$ U
        this->j=one.j;) J2 @5 X) E$ s% ?, j
}9 f0 u' p0 y/ D0 @8 Q
9 ?/ K( w% S& N7 X$ Z4 _
CA::CA(int m,int n)
, ]' J/ J) U# Z{/ q' A( e6 l2 ^& C' u% e
        i=m;
% H( \3 A+ O4 A- W0 ^        j=n;) U+ T* u& y  S  B9 q, ?- B8 C
}7 ^: h9 T& x) u
5 N( {1 q( r6 ~4 K# ]0 w; P  ~
void CA::print()
1 Q* P" I$ G; f{8 o  \* H8 T. {* Q& k  c- \3 b" V& }9 Q+ d
        cout<<i<<endl<<j<<endl;
" n, a1 `* `( \}
" T. ~  j) p% j. W( N2 X( O. T
% J* e. W! g3 m  a* N5 Q/ u7 e9 qCA::~CA()3 |# j# U7 M) g9 S! d; R
{
# Q6 Y8 a/ |5 V4 Y0 u}
) @. e, b* v5 z, f5 Z& z  s* D
#include <iostream>, X" w5 M/ z. P, Z4 L1 X' }( C3 Z& Q
using namespace std;3 Q( v' m' f' t% o* N& y' |
#include "复制构造函数工作原理.h"# z+ W( u7 M: R6 ?& O. ]
int main(void){        
( m; }3 N/ W  I% @2 N+ Z1 E; ~9 t4 yCA a(2,3);        - ~+ b0 N3 e9 j7 S; x5 ~- h3 v
a.print();       ) Q; o( O* e  K) c  J+ z% J& G
CA b(a);        
* W4 B9 ]3 K. X. r# @( [7 [/ tb.print();
% d- N5 @" u7 N, [3 P  v* \; }2 H      
! ~% Q/ t2 S; B! t3 [; O, c! ~" E return 0;
( q7 o& ^' t# w3 M}1 d; d( t- \* W. _- v* E& L

4 H; @3 r. u5 X/ P2 a8 z1 ?" V0 W; _: L( R- `/ w

# h  f2 C8 Z2 x0 q/ {# |! M! ~8 w: k) k" U& o( S  B; s9 h8 R+ z* {
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
1 }! M- G6 ]- [! S; B$ u. C1> 初始赋值时:CA b = a;
8 k& S7 ~( j( r, ~6 U( N  F2> 按值传参时:void myfun(CA ca);
6 E$ M1 }: g1 l3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
9 N% S0 z* V4 L, Z+ x5 I复制构造函数在以下几种情况下调用:
0 m3 e5 O* O+ O1> 初始赋值时:CA b = a;, y# M& W/ C7 Y2 E
2> 按值传参时:void myfun(CA ca);
' _( q1 C8 W7 a) c% [  g
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-10 16:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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