鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
9 r. W8 R# c0 |1 `$ E/ B3 h1 Q5 u6 x# p
class CA* k: V6 P) `3 J
{) q* B& b% Q  J1 P2 l5 g
public:6 P4 u1 p- j3 z/ D
        CA();- S4 d) f" E6 X' @% p
        CA(CA&);5 w4 o: ]) k; i' v! b! P- ^) a
        CA(int ,int );
, \! T, f8 i5 `2 D; H% N5 Z        ~CA();
2 V1 b/ @* }6 Z6 Y8 X5 ?6 m, g        void print();
2 _1 f7 P4 T- O
$ j5 K* {0 x5 r! l. bprivate:8 W1 J/ T7 n# H7 W: k7 H
        int i;' J/ I+ g3 }4 U7 E' N$ ]) C
        int j;3 F- j, y" n8 Z% u( H8 u. J
};
4 F( r8 y: r+ U
: X; s( a2 L9 k: ]CA::CA(); K2 O& L6 p* _: B& o; ^1 e( [. J
{
' n( ?( V$ b- @. j7 o& z1 D! _6 r}# O9 V% }# Y$ ~& C% [3 H8 M1 @! c
2 O) \4 f. _' N( f
CA::CA(CA&one)" w; c( C: B2 |$ i# r
{
6 r  |, c6 w7 _; k/ _2 @        cout<<"调用复制构造函数"<<endl;
+ c2 z5 |6 K0 p        this->i=one.i;. o1 L2 Z5 X7 O8 e. V- S
        this->j=one.j;
: L0 B( \0 I4 N7 H2 s( f}  x6 E' ?% {' X) T& ]8 H
+ k, b& M: j7 b7 o/ m
CA::CA(int m,int n)
  Y- k* M/ F/ F9 r{
) s9 t8 B; s0 b' X! t        i=m;
* B8 u+ V0 ^! x' k        j=n;5 d2 c5 ~* @! O1 Z4 y4 L
}
( S! r2 S6 h' Q
, A* S6 Y: ~' ivoid CA::print()
% ~) u4 j) C. ^1 M: g1 n{
$ v' g% s, y1 g  U4 J        cout<<i<<endl<<j<<endl;( E1 O: ^$ F. n' R
}
& |# {8 k: N& B; c. @
2 @% b8 a+ `; ^5 Q, RCA::~CA()
+ q$ Z/ i" r5 g. A{3 B7 k  B% e- v4 }* V% E5 T4 Q
}- m; T, f( Q' v2 l. J9 c1 V

# D  i$ |7 ^. Y# \#include <iostream>
9 o' j$ p1 L, q$ lusing namespace std;
; h1 \- L4 j  ~/ W- V8 K# S#include "复制构造函数工作原理.h"
2 `' W( G5 P% q- ]+ D- Oint main(void){        8 ~1 c4 a8 z/ L( q( |7 }/ E1 G( T" S
CA a(2,3);        
7 [" c" |; r% F3 m  o3 Va.print();      
# O4 f. Q4 T3 i# l CA b(a);        
9 m" n7 |0 ^+ ob.print();3 d5 V$ x% ~& A8 J! g% r5 _3 ], ]/ K
      
) f1 |. \3 W$ j& S1 X* Y return 0;3 c; S% c% ^3 p$ f# ~8 e, c
}0 P* U& r" P4 q) X: M# q# l
- z9 o" u2 O" t. Y2 H3 R. H; l1 C

- G6 Q- u) @, s: U% ~" ]4 }2 P( F5 S) F
1 ~, I  [, m' ?' a* p9 n1 a
5 C6 s; ~. U4 J: n$ p
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
5 e; ]3 d9 R$ o) r! b( O1> 初始赋值时:CA b = a;  v  C3 e+ g( l, j/ r
2> 按值传参时:void myfun(CA ca);- s$ |  T0 |" B5 Y5 D
3> 函数返回时:CA myfun2();
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 # n1 K8 T  |' D5 ~/ d' b& F
复制构造函数在以下几种情况下调用:
  k' P! c0 L- h( g" v1> 初始赋值时:CA b = a;. e7 U/ D. f2 B6 W8 z9 `
2> 按值传参时:void myfun(CA ca);
* o9 p' C* g8 Y1 V! S7 ^
第一个应叫初始化,不叫赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

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

GMT+8, 2025-2-19 07:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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