鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
- W# B& o  _, Y% d2 y* D0 l/ H- {4 y4 E& N. P
class CA
7 h+ w& w# ]4 x, z' U{$ t8 h) n* Y$ _! F$ E2 `( T
public:, E& T0 d3 w6 J3 B
        CA();0 `. y/ O% U  h1 X
        CA(CA&);. `/ G( f, i) b$ I6 {3 U0 J7 @
        CA(int ,int );; n; R$ W. U4 A3 y& Q* @; R9 u
        ~CA();+ @, z; L2 S9 K4 T
        void print();
  }8 m, A, l6 z  A
: K0 O" {/ e+ F6 H( \' {9 `private:6 |# \1 t9 P: ~4 b* x/ n" E6 A
        int i;
  Y* f3 u1 N, H: V  j        int j;! L1 h$ k' r6 L1 T8 [7 ^3 P
};0 l3 t9 e: C. o1 L! Y- H2 x$ u

! @1 \' v$ O( R- F, ?CA::CA()
( D. o1 r9 C* U{3 L$ O7 y. i. U6 u6 u( b. J! _
}
0 g/ r9 i) W9 j6 D- B* C  ?
( E  K, z$ N- eCA::CA(CA&one)/ R+ m+ N6 D# y4 R: e- l6 G2 t" ~
{
0 e9 {1 z' T! e9 Y8 O2 y1 O8 {' k        cout<<"调用复制构造函数"<<endl;  J* o/ _9 b/ n+ A
        this->i=one.i;4 M+ c; N7 u+ W* a8 s
        this->j=one.j;
5 R6 k; {6 W. z% M, U# }1 s% I4 ]}' l+ ~7 |4 W) X5 b2 p( U$ z

1 k: B/ i5 f# {- Z; uCA::CA(int m,int n)7 u0 N) `: |& H3 a) P+ R$ g
{
6 o8 M0 {0 I. M, u) s5 c        i=m;
: Q1 c# \& `1 z  j/ U5 B        j=n;& P4 W0 D( O! M" A# }5 r  {
}& j) k/ A! ~3 w( K1 a
$ n: R2 X, j3 D
void CA::print(): f2 O: b; t5 M% J8 {  C  C
{# ~: \# y* J) G; h' w! f  F
        cout<<i<<endl<<j<<endl;' O" I1 q9 B! b" V% H8 u  B
}
  P6 R; a+ O; U+ t! Y8 T8 I- B
2 C+ {  q. I* E, G+ f7 C6 {( hCA::~CA()2 B0 A/ w( y8 w" |
{2 x! s- r" E1 @4 S6 e
}1 j4 R; q9 z- l$ R, C. ]4 ^
. @2 {% H- `+ x) ?
#include <iostream>
* k8 ]$ x  ]7 K! u2 wusing namespace std;
  p% j7 K( d5 }; N0 s+ G#include "复制构造函数工作原理.h"
8 U. ^5 T2 Q0 L7 i0 B4 A1 kint main(void){        
, `* J6 k/ e2 c; XCA a(2,3);        4 y0 t2 y; _1 J8 a
a.print();       & S' @, z# c. \
CA b(a);        
# @& I8 L3 ]( c) L3 T; Y: db.print();
0 g- y  H' d( O1 b  a( y      
5 T: Z, [! \8 a( ?2 l return 0;
9 |2 ^% X; O2 V}: _( d% N7 L/ c4 s) V4 ^

5 s2 F0 `$ T- }2 D: K* ~* k( U2 Y
1 l: Y; [( R1 J8 e0 `! R5 L* W% J9 I# \: c

7 c2 o" q7 x% O( q7 e: }
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
% g! c, d( N" \6 X" z1> 初始赋值时:CA b = a;
' b1 l; c( [( V5 {( V) W1 m9 v0 s2> 按值传参时:void myfun(CA ca);1 l$ j3 L& P2 ], M% L# L; }$ U( D* P
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 * q  e2 [* l' W% |& @- ?
复制构造函数在以下几种情况下调用:# ~# i% _; U$ O9 A+ X
1> 初始赋值时:CA b = a;8 q. k1 P* `9 A8 N/ I/ T; d
2> 按值传参时:void myfun(CA ca);

# m+ [# Z& _0 T/ O第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-10 04:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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