鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
) k) o2 p! }+ M% s4 R# j; |  Q1 G) P% R2 s
class CA
! E; V8 V) M- ^3 m{
1 \8 y. r2 A) t7 q5 P/ T! wpublic:9 i6 A! p  u/ e/ Z9 V
        CA();
4 }* Q0 ^# q/ S        CA(CA&);
* u/ \# Q; g; t* ]' _        CA(int ,int );
9 r8 R+ x0 o$ [& g6 I5 L        ~CA();( |( A1 H# A$ b) m* {
        void print();! }- k' T0 I4 v

% b- M! r4 e" [7 O; Jprivate:
. r0 z$ T* j) W4 S( L' n        int i;
7 i( n. @4 w' ?        int j;
/ j$ w( @/ q# U, z0 m};
0 g. }' u; a* G: {% P8 D) w' f9 |' U
CA::CA(): T8 y3 g9 p& @: y% g$ }
{
9 [: q5 `/ n& |6 m}
8 D2 W9 f7 j" \# ~* ~6 C" O- z8 W8 {4 B
CA::CA(CA&one)0 O  |7 i0 G$ |
{4 Z2 {, {' q" P6 @7 {" V
        cout<<"调用复制构造函数"<<endl;, S: \  t7 F! L
        this->i=one.i;2 n7 j( m( T2 V8 v( e
        this->j=one.j;
" U. n: [: f* W$ F! C7 P}) l) y9 g  Q- K- V% t

5 l$ A6 _! [" z# W( B; KCA::CA(int m,int n)0 Q4 W0 B, ]1 `# R
{, I+ Q9 e8 h, w3 i# ^+ U
        i=m;
: C& d& k4 q/ e( T$ |- m. g7 T        j=n;
5 k! Z4 j. N& e6 o9 y& m}
$ B8 r* i: {5 ~- i: b/ o$ d- y0 l- X) c6 C' L
void CA::print()
$ t  h5 W8 Q& H3 {{
# q- t: a3 m+ q0 o. j        cout<<i<<endl<<j<<endl;0 ~; t% s0 Z+ K, J( w9 e
}
/ W* o/ y: L/ t' i& w  h4 o6 H% m# R; J5 {% ?
CA::~CA()
9 \7 z# d) ~% ]; P! j- L9 Z4 |9 O1 c& L{! E# F+ v9 H/ c( s# X% O
}0 C# L2 p' z) L- J2 S: ~5 w; T9 T

; K8 K/ K9 I' |& N$ P1 [2 A4 C#include <iostream>
! v9 t% p0 f5 P2 w, d. Z# F6 D; jusing namespace std;' `- V: [* s8 {" V4 |' D, N# k
#include "复制构造函数工作原理.h"
% d5 T4 ]1 Y1 l# @int main(void){        
4 Y0 o5 D! D$ DCA a(2,3);        ! r+ K" b- F. {5 n3 C  Q; b  _; a
a.print();      
& L" w- V1 O, |3 } CA b(a);        4 u  v# {% R/ }" |# a( T; z; z
b.print();
; X0 F$ _3 I1 q8 @/ R+ e% Q       # F. r+ G9 x/ e. s. t- N
return 0;! k* I- x  p8 J- B+ a
}
5 b* A% w9 l1 H' u) G  j' t
& `! @; v/ S! h( {2 M
: S! I5 l9 B. U  G/ @. d" B% @# H3 e1 `) x  c; c4 Q+ [

; S  U# r8 C4 Q
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:9 }; r* [, S$ C* t$ Q3 p' E, w
1> 初始赋值时:CA b = a;, g+ Z4 {1 Q# z  p* F
2> 按值传参时:void myfun(CA ca);  d0 E7 X4 c3 e* D7 \
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
5 ?& I6 [' I2 w1 {7 ]复制构造函数在以下几种情况下调用:) y8 q7 E& ]6 q5 [% n' J5 H
1> 初始赋值时:CA b = a;
; T& a! S7 n- x- c# F# U4 {2> 按值传参时:void myfun(CA ca);

6 @% e  w% R* ^( M" Q0 u+ [9 N第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-16 00:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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