鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ( `1 T9 X% p3 @# w# {

! {& q. y- ^2 c" Oclass CA
4 d5 h  [  ~2 Y{0 I( J9 Q2 x: d& I) V+ I
public:
' F/ U5 O5 H" z6 a  J        CA();
. m6 t1 k+ }3 F7 Z( E" R% z        CA(CA&);
# g' |. y: H% m3 R$ N        CA(int ,int );( n6 ?; v9 c3 |. d+ g0 J
        ~CA();5 Y# X' @7 t# _5 n' v  `
        void print();3 H2 R  q0 t# G% J
7 H5 K# ]( j# D6 o0 Z
private:
/ A% I8 b* [" [) L0 J        int i;' z4 R8 g! ?  P, E: |
        int j;
. ~) A+ O( j# e};
, s/ C- e' y5 Q& P$ Q3 _6 p+ J7 c- X( {' n! X( Q) C
CA::CA(). ~) w# E, P+ z8 W+ m) B# A
{
, J+ y& g. v" \) C4 j- y}# M# g6 N. h3 \. T3 e% z

5 o- B! A) Z  S  M# _CA::CA(CA&one)" n; m5 W$ I5 S" z0 I& L
{" [/ h" `3 f3 l2 y: N9 z* D
        cout<<"调用复制构造函数"<<endl;
6 {: s1 o/ ?1 c( Z: o. ]3 n        this->i=one.i;. {3 p2 P0 I1 K( ?1 a& O& s" n
        this->j=one.j;
* J' C  r2 H) ~1 _! |( e}# J" e, J/ h& i# C8 B- G
3 \5 F; _& @- v4 v, L6 o) U! T
CA::CA(int m,int n)
$ J$ W2 q: y. k# t5 H$ |{; `, B0 T0 n- E! o, X$ C4 o
        i=m;
4 B' R" d* y* R- c! y. i4 v        j=n;  _" Z& t/ R& N  ]& q
}
5 Z" u' g) w9 T' O# n' G) O. p' H
void CA::print()% R; f& m9 A6 ]6 ~" I2 ?6 f5 ^" O
{- j% C  }3 m0 J0 u5 [" d7 e
        cout<<i<<endl<<j<<endl;
+ R% z: w& H! {5 [4 c3 g}
+ H3 a8 F1 p( t8 w3 U! T
8 b7 f) Y1 S9 d/ d& H: Z1 ]CA::~CA()
, x4 ~7 X/ s& k; q0 k{
1 f0 N7 D- p; ?}9 y- ]- H* B$ r! u
+ h+ \' A+ ]4 k  E
#include <iostream>
# Q' V% |3 G* V' O8 |# uusing namespace std;' w' ^! C& e  W7 L8 y
#include "复制构造函数工作原理.h"/ a. N: z1 U! j1 m
int main(void){        # F8 s4 f8 A' `; L: h( V2 x
CA a(2,3);        3 a: m$ e  i- \9 _% }
a.print();      
. d+ u: `3 Y0 `2 h4 J' B/ @; Y. } CA b(a);        
$ E  G& Q" B" |b.print();" y  L: ?( z; X' R  B, p4 }+ w( w
       * a' ]: n! g) z( c+ V
return 0;' i5 H& a1 N! z$ D
}
- c8 Q/ U- _' j) \/ |& r: s
' `  s; {1 R. N& M& Y- e8 ?7 r; \0 P% Q/ l2 \9 @; z
2 }, y9 p! ?5 R/ ]
" R/ @0 v" z* ^" n) Z7 J
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:; ?; X) Y. I4 e$ `& s2 s/ [1 {
1> 初始赋值时:CA b = a;8 u( f# Y9 E- T! T1 P! D
2> 按值传参时:void myfun(CA ca);
, {+ h9 K; C/ o9 M3 M3> 函数返回时:CA myfun2();
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 1 K4 I) F0 k- M
复制构造函数在以下几种情况下调用:
& }) T* p0 _$ T' @; u1 n5 L2 e1> 初始赋值时:CA b = a;+ b1 Z9 E2 Y. s
2> 按值传参时:void myfun(CA ca);

  o6 E& G6 M$ J; f第一个应叫初始化,不叫赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

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

GMT+8, 2024-5-9 06:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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