鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
+ {6 l5 \7 y% c$ @& {
9 U! |' F+ g1 d) M$ O! Kclass CA
7 @/ Q( M5 J! Z5 s{: Y7 J/ W' ]# h$ e5 }
public:7 S+ E3 s5 A$ Y& p# P! Q" K& h& ]
        CA();0 |9 g/ B: O8 J
        CA(CA&);1 J% v( Y+ f0 I+ C9 ?, m
        CA(int ,int );
9 f/ W" w0 b% j$ `6 k* @        ~CA();
9 r- C7 ?& s. W) B' ?        void print();8 E* Y$ ?7 d; ^, v! J7 A0 m+ l
3 A+ L3 q- T' x  N
private:+ Q3 m8 V1 J3 Q- V* C: [4 ^
        int i;
5 n: i& [6 s" i' W  j        int j;2 L4 D0 O" ^5 T0 B
};
9 g2 T. L) H% B
+ e" T; H/ s# r* [  q. U+ \- nCA::CA()6 R. S# s6 @. ^1 S) p
{
  D7 @( N* B) g) K6 w* r}
7 k6 _+ t& ~3 L9 `1 g  i' b9 V
$ D) E& t' u$ _CA::CA(CA&one)
) i$ M8 O' o( E/ ?{
; c+ Y/ r  }& z) D! N        cout<<"调用复制构造函数"<<endl;
' ~+ G) t+ |8 e        this->i=one.i;
+ H. y& u6 h$ G/ s" X1 N        this->j=one.j;
5 G6 N! u  l! F- G$ T" S9 @  P! r# B}
3 o/ P7 X) n$ O) C' E0 P: W% f1 [( q# Z* O6 N
CA::CA(int m,int n)
/ P) D+ X/ y1 j  w7 \3 n{
5 v  l. t% S- U! D3 Q        i=m;1 |* |- T2 D0 V! v  u9 Q
        j=n;' m1 d& c$ x& I  J0 }9 U
}3 Y0 k- c% o+ L) I

: `6 j) q! d/ S' e" W. w. |void CA::print()
5 W& c- h6 z8 ]. E6 E; U{
, ^, B$ a9 ?# T$ A/ L        cout<<i<<endl<<j<<endl;9 \- X0 `" B8 X4 s- L  J
}' {3 W' I' i  r+ c, W& w- B
# E+ C; B/ q8 m! b
CA::~CA()
1 }1 j" V3 o3 P4 t! S( B" `{
" ^8 y1 e$ }$ x" s. i" G* r6 M% R' k}
3 q' N: r4 |$ s
! V1 i6 U* q% p7 x  w& x  D7 O#include <iostream>
: `' \% L0 b# |2 g/ p. v6 P& X7 i$ ^4 Y6 \6 _using namespace std;
/ y4 @1 `0 w( K#include "复制构造函数工作原理.h"
( `2 E6 T+ ~$ |$ K9 {  }, E  eint main(void){        * I- v! b) B, k& Z
CA a(2,3);        ) o  v* g; Z( U
a.print();         Y3 Q& w) G6 b' f, A5 e( d
CA b(a);        
4 g7 [7 M" c! _& A) F* I3 Gb.print();6 N" r% m4 b; h. R- P' |+ S$ u7 A
      
6 c5 c! E1 Y: ^; c" C% s3 ]4 `4 G return 0;+ ?" `  f8 H0 X) [9 L
}# U/ K. N. Q. a5 d5 P$ A% \4 ?

* L0 l  s4 U: e, t* u+ i! v9 i+ V5 C! u; d: S

8 E  [5 B4 a, B3 V, ?9 X7 i  K; w+ N
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:5 h3 A( ]% ~& V3 M! p" `
1> 初始赋值时:CA b = a;
5 d0 S5 }  k+ _+ s2> 按值传参时:void myfun(CA ca);, r. s2 P3 Y# o$ J# J* b$ j
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
: v0 O$ |4 n- R! D; [5 m复制构造函数在以下几种情况下调用:
8 R4 @: [2 ]$ g$ O. Z8 j1> 初始赋值时:CA b = a;9 |2 a. I: j  H8 m+ c! h
2> 按值传参时:void myfun(CA ca);

6 w5 B1 v' O5 q: ^" p第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-3 06:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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