鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
1 _2 M: L0 a, G2 u3 O
5 y! q; ]% ~9 d8 E+ _- E. P6 Dclass CA/ i+ @, O+ o. A" ^% I3 ^
{3 E  Q5 F6 t! k$ t% i% {
public:. C7 h8 X. h0 Y) R# q. s0 X
        CA();
/ d/ K, u; @0 s/ ?6 @        CA(CA&);
  ?6 B  B; V) c6 j7 P/ F        CA(int ,int );
; q" R1 ^* u; D6 |! O3 u        ~CA();0 o& s, ^4 K% U* s+ I7 I
        void print();1 K  e9 C3 K! H" G# S9 _
6 x( O+ [* ?" {2 Q* w5 e
private:
" \, ~9 c. E0 o0 H3 J        int i;# x* Q5 e" A, V1 s7 f" Y' F# o
        int j;: `! S3 g: G  `
};
1 D( ?" o; g& v! |
, W9 W# ]+ Y3 A  _1 gCA::CA()
5 m" |1 z  Q: C, F) K% A+ C$ S' |4 u{
1 _5 q  t# W0 ~% Q# \' U}$ h6 b. }9 B* ]) t9 w
( w; u% B0 O) A: ?; g) `
CA::CA(CA&one)9 Z: B0 ~) B& c
{4 ^/ z, d/ |: t7 [& [3 K0 ^
        cout<<"调用复制构造函数"<<endl;# |# X0 O" t7 ~7 s; i& v- Y
        this->i=one.i;
/ l4 Z9 |4 O7 D        this->j=one.j;
, _3 {4 D3 _4 Q2 f5 t. P}
/ w$ q9 Y' ~0 m; B# g/ p1 ~. A. U  Z9 m
CA::CA(int m,int n)
& ?9 Y: J8 E/ f{
1 N5 e( T  `: G. B1 Q( X2 A& r2 F/ }        i=m;
- i" V# D6 [) v6 v4 b. `$ S$ {        j=n;3 o$ T( ?8 I" X" k
}4 `( E! s+ a* H# h
# L5 u% [* U: T7 q, {+ X0 Z) z
void CA::print()
9 |! d% i* ?5 N4 z5 A7 p{: o1 I0 q3 t5 U0 e. F9 w
        cout<<i<<endl<<j<<endl;6 g2 V9 v/ Z) }/ l5 L
}4 p  M' d* N- Z6 |1 I# l" ]

. n7 h5 O5 [+ M% R3 LCA::~CA()
2 f3 H0 \! t( O6 J8 E; J  D7 h9 {{
( ~2 i/ {# L" B! J% N9 _}
- [/ U6 r3 q( o4 g+ E7 w, ?3 v: d
#include <iostream>
. ?1 s: j1 D; w( w8 q4 O7 A  P; r, y) Kusing namespace std;5 U  h6 ?2 b5 a' ~) z
#include "复制构造函数工作原理.h"& X$ v# i+ H, p% D
int main(void){        % I9 Z' ^, o' \6 x: U/ E
CA a(2,3);        
) j4 d% N4 A9 j/ {1 c9 Va.print();      
; a5 W7 r* ~* A& P0 e" g CA b(a);        1 `* w, ~* c8 M! Q% h( @
b.print();) _4 c% J5 T6 T8 o' h: D
      
5 J" T: `0 ]0 @5 o' w" t return 0;# X, C5 G, s9 D/ w& a4 D
}
8 e% ^/ w& ]6 k$ P" K7 X6 J6 E4 h% V) k4 j1 t- ?3 j

! A2 L' a% E$ }* `1 y& h9 u3 @4 p$ \+ v9 c1 v
/ Z# Y/ P2 o2 }3 a1 I# j% N
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:  J* i5 G- V3 R
1> 初始赋值时:CA b = a;
8 Y( A& a& o2 F5 U# ]2> 按值传参时:void myfun(CA ca);
8 s% T7 q* ]4 A1 m  @3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
3 K# q" W0 {% Y; Z6 |' v8 P复制构造函数在以下几种情况下调用:
' t: N5 f; Y; D1 ?- R( r1> 初始赋值时:CA b = a;
) A* _5 B! o, A2> 按值传参时:void myfun(CA ca);

7 o/ Y: ]" g  {第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-11 12:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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