鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
' I6 w1 B; a/ f  A6 C* R, f  X, Z6 e8 ]( q8 O8 ]9 U
class CA
) x0 h- Y0 |- n) b- j{
$ ~+ Z' z% h2 `5 A, n& _public:
2 ~; E4 C6 R% `9 S4 A        CA();' @* P+ ?4 W/ l" f% ?. C) Z3 K
        CA(CA&);2 D1 F+ W1 i- V7 T. V
        CA(int ,int );6 u- F! M% W- a2 n
        ~CA();7 ]: t* p' Y* v1 a8 l" ?
        void print();
$ C9 e6 Q2 p7 K3 z7 {6 ~
  ~" R1 X2 f. b/ {' lprivate:
( V) U/ _# S, d# Z( J6 `        int i;* G1 Z0 K0 g9 d1 c
        int j;# S/ [  x( N( X" j, q" y
};
; [! d+ Q7 R: C- B3 `
! \) U, w& X, gCA::CA()8 _# u; y: [+ H9 {! @! G
{
/ Z" q. v  t4 y6 J: p. I}
/ r. ]' Q2 z5 y' N
: F; L& E0 E, l3 }4 ^9 y' MCA::CA(CA&one)
% B% Z7 z/ P  V1 T. a4 V1 v{
2 p. F; p0 G) ^8 |3 Z: N        cout<<"调用复制构造函数"<<endl;
" ?! w" C0 \9 Y; U' p/ Z# Y4 X        this->i=one.i;  l- z! F. t0 q( l/ p$ P" z
        this->j=one.j;  g  O) x- ^: O& [5 R  r
}( T0 E! u% }# j. y

, e7 ^4 I* W7 C% b& c1 wCA::CA(int m,int n)
" b) [' b) t" N& \, e) T' }; v{
8 m! r' u9 \& m. n* Z        i=m;
) Z6 B& N: `! E% n        j=n;
* b" P& v, L! n2 W8 l& R3 D}- h4 r7 I% S& C3 e
, g7 S0 U. ~7 h
void CA::print()
7 _# ]1 q) o/ _# }) n{
8 |9 m- p6 ^6 B5 n        cout<<i<<endl<<j<<endl;
+ V& W9 S! {/ \! A+ _. f7 x}" q% X  m2 W! k* g% n+ `

6 G" b& o8 @7 \1 vCA::~CA()
8 T1 O8 z8 R( `# {. W{
- P1 N' r) S4 w% \}
+ e( N3 h/ P* U5 e2 j  i! x5 _' P0 }& [: ?; d
#include <iostream>
1 e9 e. d4 q8 `5 U* p1 K9 i7 Kusing namespace std;
( y; ^1 _$ a5 ]4 [#include "复制构造函数工作原理.h"
* M& y* g; b! h0 ?, W. R  `int main(void){        
( m( h* j" d" ^8 s+ yCA a(2,3);        : d5 Q7 ~3 ]( w8 B/ d7 X( Q! B* p: `
a.print();      
' a4 a- Z2 B/ [8 Z3 T CA b(a);        
1 I4 T+ Y6 C" H* }* `$ sb.print();
  ~( w! ^; ]% P! v      
' G* x9 X: v3 a. u return 0;
5 `2 A  o% a. {! K, t5 }}) k, c5 y: ^7 Q6 M% _# a2 s) E
- a( [$ L4 j( Y
" w( u0 @' x# L& B6 ?4 `2 x/ x
& G/ m# T7 ]+ v, m3 `* c

; X7 A1 z/ q7 M9 g: N9 Z
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:& j+ e5 [" H3 I. q6 s6 g% ]& L, S$ ?6 w8 x
1> 初始赋值时:CA b = a;% ^2 l) J( @& e6 m. D# R  h. G
2> 按值传参时:void myfun(CA ca);
- e) y) r( W4 w6 X+ z3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
4 m: E! x- J7 _4 X0 m% _复制构造函数在以下几种情况下调用:
: Q3 R% A; C; d5 f" D1> 初始赋值时:CA b = a;# t$ R$ _1 g# \( |: I/ f% z- n
2> 按值传参时:void myfun(CA ca);

! s, e* |" {! C第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-22 17:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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