鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
; V1 z+ b& U! E8 G
( K; R' X- h( J! p' Xclass CA* X3 X( z) g6 r) j! X* o, W( h
{
3 y4 i3 h! z2 S: }: [public:
0 [2 E( a( X4 u7 c        CA();
' U1 ~8 W) U: s/ |        CA(CA&);
7 g0 J: _3 W  l3 G; v* M        CA(int ,int );
! G* R. [' m$ r7 G0 o        ~CA();2 F/ x: {$ Y8 _
        void print();
0 a: j) d  w7 \  l( c
( m  |* W7 m0 v2 Y2 Gprivate:6 G  z' D; D: j! }% I9 c; T$ A: R
        int i;, @& h6 v6 N( K, z! O, K' D, l
        int j;: J/ d. y9 Q9 ]% J( G
};- m4 l0 H8 v+ E0 i* g
" z4 Z; z' o$ ?* `7 A* M; {: N* x
CA::CA()2 `; K( E/ j" z$ G6 X" P, q1 J
{0 M) Z* e7 Z2 r) a) z" I2 x0 Z4 _4 f
}
# y9 W0 T- F. H( w- a% O: g! r, l# o0 z7 m" X9 n  u
CA::CA(CA&one)
) ?, L/ `. Y) H7 e{$ j* `5 P7 {7 T4 k* b) K4 U
        cout<<"调用复制构造函数"<<endl;
" J1 ]; |, X) \& G- _- g        this->i=one.i;
! m$ g& A8 y0 K* t- w" a        this->j=one.j;
  ]- s1 t0 m+ B, g. p}
: I" q4 u) j6 t' }. b/ `# r+ q" W. S: i% r, p2 c
CA::CA(int m,int n)& T/ Q, C; D! R/ F' U+ Z  U
{
) ]* e' k0 y8 K; U, g$ [- x0 e        i=m;
. s  i% d7 r5 J6 m9 |5 o        j=n;# Z5 {$ k: P$ l0 ^5 {" b7 ]
}2 i% ~; [7 X% X
+ a9 f" s0 o9 D0 x  J& g
void CA::print()% w0 z+ i% w6 P0 P. t, G
{
1 z0 K- c  k5 r- Q' s1 f+ W' z        cout<<i<<endl<<j<<endl;; T9 C, G, m0 v' j5 e
}, n& s- S7 A/ E# t

& M& p5 b$ O+ K, U: \, E/ ECA::~CA()1 M; [# {" M" Q
{) J) b$ ~* _6 T+ [9 W6 `( c
}
6 r4 l9 n1 y( }0 W8 N9 S  X' |2 M2 `  O: H/ u4 k
#include <iostream>
0 P4 D  C. R  I  q1 musing namespace std;! p, |5 e: A9 Y8 M& Q
#include "复制构造函数工作原理.h"; s$ q+ U# I' w: H; ^" v8 I
int main(void){        
9 ~' C& z5 K' d7 P# i# LCA a(2,3);        ( K* J7 A/ F1 B' Q; {
a.print();      
  O0 P% a) Q8 H7 J CA b(a);        
: s& |9 ~& d- M; db.print();: m" Q! Y! n0 e) M* q
       8 I7 `5 D  ?4 }9 z9 |
return 0;9 Y3 f* E# y' k# Q
}
6 P- O% W! E3 b/ }  T
: ]* h% ~( v  E% Y0 @) Z$ l# `5 X5 d' J. Q! [
& {& g6 J" r, Y" b% h; C
4 G" q- l: e, M+ ?% [8 {/ c* U
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
2 Q% d, G9 s5 \+ h3 u1> 初始赋值时:CA b = a;( B7 \* {+ p7 k* J! ^. _3 C  F
2> 按值传参时:void myfun(CA ca);9 V  |0 s" x- w; S$ q
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
: X, n7 W4 |' P, i* f6 {/ F复制构造函数在以下几种情况下调用:' v1 n4 H' d' H* w, m0 Q" R
1> 初始赋值时:CA b = a;
5 q* N) o- U) T1 k1 X& g- |: S  n2> 按值传参时:void myfun(CA ca);
  }- H5 \2 `$ `, n8 X
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-15 00:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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