鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 . \* `6 J- z* G! R
! n, y6 x+ N' h0 m1 |' s% B
class CA5 x0 Z% l4 K/ G4 S( b" `* |
{! u: v3 Y0 K. e  }0 F  O0 z
public:
$ M' [9 N. W' k: f3 [, i        CA();5 G5 d1 ~% r9 Z! w. s
        CA(CA&);
0 Q! b- ^' P7 N  z4 P) m. n9 u        CA(int ,int );( ?% ~' d4 S4 A
        ~CA();
/ e- \. e; z+ P5 m" I        void print();
) K0 t* N/ g/ d: @3 b/ q* ?
% G7 h" t( x  B# x1 Sprivate:
$ H9 C9 R  B# F        int i;
8 f( U- O$ V  j, R: b. m8 d        int j;3 S, U& R4 }6 @+ \# V- l0 C' u
};+ n) ?' G7 p2 T! E
- J! {; m9 h1 X, v
CA::CA()! D' j2 h9 ?; f  i, v
{+ M" D% B- g$ }1 [! F
}4 C0 f) f2 {1 Q3 j& H8 ?8 B/ R+ L

- X' v' \, T: e, {. \% q' \CA::CA(CA&one)
1 \# G1 V5 X, I% @  o  C: c{2 B/ l; A  |; l, N$ _7 |6 D% y. r7 n
        cout<<"调用复制构造函数"<<endl;0 h1 L0 t2 h3 `
        this->i=one.i;$ c( t: H% J7 [5 ~
        this->j=one.j;
) \  A; {0 ]- \/ P0 ?' V}
  [. Y( t3 E' {) P* e: z2 O% k9 g! Y3 b: S3 d4 c% D  V3 {6 ^, K# T
CA::CA(int m,int n)- V* q8 P: R7 ~
{
  x2 p9 }, t1 \# S8 I- p& P. p        i=m;) A: s5 e9 T" ^5 Y- ]+ X4 Q
        j=n;2 {  O$ g( H" P( }  {4 |! H
}5 e3 v+ I0 y1 e( }1 O0 d6 j% |

) p  z2 x* B# U4 I, W6 mvoid CA::print()/ U0 n( o% W  Y# R  d
{9 m" X6 Z* A, y+ h. N- T% s, V
        cout<<i<<endl<<j<<endl;: i2 @  {9 s* B# @
}$ U- H# f0 z, h1 \) D

# ]' C* ]8 n* l) E0 GCA::~CA()
! K9 q" c# m' B{( {. Z3 |" u, [& L. }' J! s4 G/ F0 I
}# g2 N  t$ n0 F, E- z7 ?. w

5 N# |: L) T' w% Z. f#include <iostream>
8 h  y6 K  o# ?# T' S; Rusing namespace std;
( l6 [4 C" s# V, j, i#include "复制构造函数工作原理.h"
, b! E! j9 J. A1 H$ U: L/ ~int main(void){        8 h7 ?4 s( F! H+ P8 f
CA a(2,3);        - n- r- G: A3 W. L0 M5 l0 G
a.print();       & g( L, V* A& s& z& u* O
CA b(a);        . P$ i7 y  T9 p9 x& L  k
b.print();
2 q* Y2 O* X, g8 w; l5 i       ' f, s1 ^- U( D% `3 n8 d' X
return 0;
2 g9 Z, h- w7 G5 D, A; W+ N/ Z" @}
' p" I* Z2 c& m5 ~$ Y
, ?& m2 z, @. B" F4 c; Y5 f5 D+ g) N& i( J

: B! M2 V  u% w  J2 q# @. d3 {4 k' C, q# p4 H
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:. M% Y: k2 S" \
1> 初始赋值时:CA b = a;1 u) o1 V, `2 u7 O' U
2> 按值传参时:void myfun(CA ca);
8 t7 J- Q  E- w6 G/ d3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ' t9 A# \: W$ |3 ^
复制构造函数在以下几种情况下调用:
1 b1 s$ c! a+ v: H7 W1> 初始赋值时:CA b = a;
, w$ `) F+ {1 g7 g; o- C2> 按值传参时:void myfun(CA ca);

% u' ]$ z' q) Q. D. _( R第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-6 17:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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