鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
/ i7 E& z% |! l- ~) F) A, L6 ^/ g2 [) l
class CA" t* _! g+ l; X* s
{6 g, S8 O1 N0 u6 Z" \+ z; H
public:3 s( X7 n! R2 i; x5 u' ?- T
        CA();: q7 {) R3 C- v# o3 H% C
        CA(CA&);9 ^. A) Q0 O7 i! N5 x5 x
        CA(int ,int );) D, B; V9 P3 d# Q* h
        ~CA();
7 y5 c) B* Y+ ^/ w0 X5 ]2 P9 j        void print();
- c& @7 S4 `9 G" c
( h$ T# }2 y3 [/ W$ [private:
. H. `% @1 d% |7 F% D& o3 c$ ^        int i;
3 E& f6 @5 `$ ]! M3 z        int j;6 {5 r) _9 ~- X4 R1 y
};
9 }0 U  H5 [+ X6 ~  X  y/ M  t1 y8 S, d: C& Q
CA::CA()1 h- P( ^+ E+ w+ b1 s5 ~
{* b$ C+ d% w( I7 Z7 Q
}
' _( H! m/ u. e# C! ]. @9 y8 w5 N5 f4 \0 H. Z9 m* ]
CA::CA(CA&one)
" A' i' |; ^. d4 O7 L9 `0 q{
- `; R5 X) z( }( c  L        cout<<"调用复制构造函数"<<endl;
5 A; u  C- T" {) [        this->i=one.i;
- S( a* \0 x! R        this->j=one.j;
3 ]) ~; Y. {5 t7 q6 D5 d}
3 `) z: O2 f& K4 [) m; B: e) `. q' m2 L0 ?" _5 q: D! f1 ?
CA::CA(int m,int n)* `; I: G3 R& p3 V
{1 ^' N" E5 H" T
        i=m;2 k+ X" R! D3 G. }, G3 A
        j=n;" E5 X. C1 O9 r4 j7 @
}, H; W. X" ?9 g# J

2 D! H- b7 T7 P5 h  Z1 R, X  D  Avoid CA::print()
" S2 ^) B" r7 W4 \7 U/ ~{8 b7 @  q/ }' P8 Z& j* H0 S
        cout<<i<<endl<<j<<endl;
4 k$ B7 N* U: p6 W! a/ _8 n5 N, ]}& |7 {- E) T6 b3 T+ J! x
5 A; v7 k! M( K, L8 _" Q) B
CA::~CA()" E* o' X1 b8 I, ?) E
{  m$ M! z* s1 S+ `, o1 h/ c; m
}
% B3 W: _. h& R" o4 @) S
9 r- s4 K, D  {& O#include <iostream>
0 P5 r6 t1 i0 h* fusing namespace std;
2 w+ j: {0 t! G+ Y#include "复制构造函数工作原理.h": ~7 ^3 @, a3 e! [
int main(void){        7 R# e' o( x" ^7 N
CA a(2,3);        8 {7 P/ B$ r( c! E
a.print();       , |) g" N. J' j
CA b(a);        
! x8 b1 Y) f' l6 @+ ^- z8 Qb.print();
4 |4 s! [6 `" t$ i' ]! I; t; x      
9 k6 \8 r( }$ N7 d. R! D* k return 0;
& {+ _2 o/ M# d& j* B7 F+ ]}/ h1 B  g- X- }

5 \! ?% s5 n9 m- @' u% E( G" f( F- N1 w1 l" z, d$ I3 F
, E5 @# v' G% R7 D! m; D3 D! x8 f! N
- L9 v0 t; [9 B" D9 c: X5 n7 p2 Z
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
6 j  f% _1 {( T" G1> 初始赋值时:CA b = a;
4 p$ q" b6 b/ U2 V: u2> 按值传参时:void myfun(CA ca);
& q/ n- ~" _$ ?+ i& Y1 F3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
' }3 e0 O/ D7 T, K' }7 ~8 |& `复制构造函数在以下几种情况下调用:
  w& w* c) F( }1> 初始赋值时:CA b = a;
. C1 o: {1 `" x2> 按值传参时:void myfun(CA ca);

7 m! ~2 c8 q. n+ x+ e6 }第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-12-4 07:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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