鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
8 H2 r( E8 ~; q6 e4 p" T% v9 C( O; x8 v) H, W& l2 H$ i8 L; ?& b
class CA
' O0 [( ]& E0 a/ i; x; Y7 C{1 {8 `9 V% e% B4 o8 O
public:
# {8 c8 R; Q: b        CA();5 \7 g' E  h9 T4 H7 \
        CA(CA&);% F  Y7 n$ P1 P
        CA(int ,int );
8 w  w, V0 w3 u        ~CA();" P9 \  T4 ?8 g
        void print();  \3 M& Q& \: K) b
, V( @: f0 u6 ~, A
private:6 {. y9 t# R; g0 h$ A/ [; [6 M7 v4 E
        int i;
; \- O& I, N7 q, ^: Y3 s/ ?        int j;
) {: w/ z3 r" Q5 K) c3 ?};( `4 a+ g' O. ], {+ S1 k
  H0 h+ g+ t1 C9 z
CA::CA(): x7 |" S. X; @/ F
{. i3 H. g9 |: E- G# X5 Y
}
3 k- U! |/ `* L. t& y7 T0 o
) b/ {- k; T" y" H, E# y( v. CCA::CA(CA&one)
" O. U6 B! t0 j{# |5 {# |; y  o! b, O' W
        cout<<"调用复制构造函数"<<endl;
  ~; [0 ~' ^( ^        this->i=one.i;
4 W" j# T% P$ m$ @        this->j=one.j;
, S) N* l  \( A4 V  T& {% c}
: ~$ ?3 O1 `5 r" T+ i7 x9 P: {7 g* {0 {; K9 \7 @5 u! v" C3 {
CA::CA(int m,int n)
  ?: P( {$ ?' u+ G8 ]/ P( p" I: H" ^{  Q5 J2 N. X* Z9 m6 H
        i=m;# D: `$ o$ T. Z( u! H5 t$ j, {# j+ G3 @
        j=n;2 n5 o( J  ]/ w
}
  V9 m- N& s8 }. [- K
) m- F# [: I* p0 {! f, J) Fvoid CA::print()" h  ^, C) b7 D+ N2 K! [! f7 ^
{
0 U; D0 ?* ?! a9 u! l5 U        cout<<i<<endl<<j<<endl;2 u" A/ s" |$ ?, L6 J2 ^$ {  w$ I
}0 z4 Q7 R; ?$ E5 V$ ]0 Z

2 M) r' {8 l: N; o+ H5 LCA::~CA()
, l- D4 a+ O! N& _* I{: v7 y; _+ G7 v$ M
}9 c: }( d2 Z/ _8 ?- T* }3 ]
  \4 k3 l" V) j6 T% E
#include <iostream>
7 F2 S7 X4 V7 K# a$ ~$ ?using namespace std;0 v0 k8 G1 N9 ]+ @
#include "复制构造函数工作原理.h"
, c" T- v7 }3 Wint main(void){        
; b( t* f+ k6 k5 b/ k  y8 ?0 BCA a(2,3);        , f7 }5 @/ T% D9 }6 C/ y$ Z) h
a.print();      
7 @- C4 |6 e  u) y8 W& k CA b(a);        
% L( p& ?/ J" I* c  K4 P: rb.print();
) i( P9 R; \& m9 i) L/ z5 y; L       9 u9 A+ l$ u/ S- j, `7 f
return 0;0 f% f7 x  J8 I) D: `; b8 o
}
8 c( `7 o7 i% \" \: r* I: j. m. B
/ w2 Z; a3 ?( P1 u/ h9 _% \' F7 y, k+ l0 X1 c

7 q, u4 W/ k* x$ ^2 H2 ?' L6 f; ^! E% Z' ]* M3 d
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
9 I8 K1 j6 B! Y: F5 t+ d! ?1> 初始赋值时:CA b = a;
$ Y. u% P5 `# t7 @  |2> 按值传参时:void myfun(CA ca);' D: [/ w  `- w
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 : g# ~( O% y) F  n
复制构造函数在以下几种情况下调用:! k1 P) b) o. [& Q& ?
1> 初始赋值时:CA b = a;3 w5 S, F1 a+ o, U; A) p& H
2> 按值传参时:void myfun(CA ca);

4 }  ]0 p: x5 x! z6 R5 ?第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-4-27 10:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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