鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 + `/ t8 x* {4 S6 C4 I/ M
, j$ U, o/ q$ Z- M6 u6 Z
class CA
9 h; Q# ^4 O! m6 M{3 c; D& z- M' w6 k0 Z: j! ^: B
public:
* N. u& W( _' a% g$ Q- |        CA();# G7 k* _) \( W/ X" i- J
        CA(CA&);2 W4 s0 n3 ~5 A0 v+ e# o) U
        CA(int ,int );8 c& v3 S7 j4 T% F6 }! u- ?
        ~CA();
+ t5 H4 @2 [! |6 W5 B) Y9 u" a$ V        void print();
  i& W7 [+ J& u6 V5 U+ A+ Y; U+ Q
6 u$ r! w5 Z6 W8 E  i: a3 ~% h1 nprivate:
: a$ r0 K* e! C# a- q  P        int i;# ?8 W4 H; u  Q% |# a
        int j;
' l7 H$ |2 R3 d8 }};. E& e. J3 y- y2 M5 r2 H/ s$ }& f
- d, ]( D1 a) _7 Z: n
CA::CA()9 ]; g3 A: |) P( U
{
) t8 P- k- q+ B1 n1 w$ N% \  A6 |}- S1 }5 J2 X; Z3 A* ?' V: n8 f3 L9 r

5 I% M8 V! P1 U, r3 S! H& r. R# F4 qCA::CA(CA&one): Q; \) @& {) J1 w7 O
{' n6 p; U& x+ m1 c. ~/ D
        cout<<"调用复制构造函数"<<endl;8 H$ e) t9 k1 z  y+ q5 r2 z
        this->i=one.i;' V$ ^' o( e6 v& G: N
        this->j=one.j;
9 o7 j# [. p1 G. B! f# R. D}/ s. A" U1 v: m5 s( l

0 S& `* i! y6 R9 o; c& Y- }; @- mCA::CA(int m,int n)
6 M4 k+ G( c- h: Y; i" i. @{$ z0 u; v( i' k0 Z$ ^: c7 U
        i=m;
1 I  Q) P. z' X$ X3 ^        j=n;2 s; e% ?4 u5 w, e% |0 K6 z
}# l2 k; d# L3 R0 O7 N
- Z) Y% c6 R2 i. h
void CA::print()
6 D+ e- |" p8 G6 a5 G{$ Z9 S6 \& z6 q
        cout<<i<<endl<<j<<endl;/ {: m( v2 z" ^
}! H4 n/ q* i  I' H. s" ^

, x+ x( ?- a9 ?  u. b; |; yCA::~CA()7 r, W# i. V. Y1 N, g, q9 G
{8 ~: D( Z4 [$ a7 Q
}+ Y/ [3 X' T% D# i4 k& c/ @

3 |  m5 Z* `# ?* s6 j" p8 @) h5 e#include <iostream>
: K( L; z' U  g6 q! ousing namespace std;
3 Y" S. p% o( v: C0 F#include "复制构造函数工作原理.h"
9 u  j' y8 v' v) _# j- f9 Rint main(void){        
9 A/ d7 B& M- ZCA a(2,3);        * O- |1 u- }2 F2 Z8 g1 m; L
a.print();      
/ H( P2 t" m# [) y- ~" R CA b(a);        
* o& T) ]: W) `" K+ e8 ab.print();
$ b6 M) b1 x( n5 u/ y( F, N       1 F1 [! U. ?; `$ O* Z& f3 F
return 0;
* |0 u' R: @3 D/ [! C}
! o. ?. V% a  I5 T
9 Z+ n0 o5 K% b/ ?# [4 v! u) R/ l9 {) F) d- o& i3 G. t
4 @1 s3 ~: T8 `0 ~' _
9 Z, U5 b; @4 H8 {+ a
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
9 b' ]' e; G: D) r1> 初始赋值时:CA b = a;
9 X7 m5 R+ P$ J& f% G2> 按值传参时:void myfun(CA ca);
+ L/ ^; |8 \9 p8 W- o! ^9 v: A3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
4 }( k4 o$ z3 j6 Q5 ~' Y% w
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-8 01:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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