鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
  ~7 r" X( q( S" w6 q
: i6 N& X/ ~" m/ w7 d. Z/ Lclass CA
# Y9 ~2 k! `4 ~. U6 X/ X" B{
! K( V/ f. p( Q9 opublic:! _5 P2 ~& `2 I+ _8 w, a
        CA();
! l8 g# C$ F$ a        CA(CA&);4 u- R  |5 [! C+ O' s: F  K
        CA(int ,int );
$ c. ]; O: G: J8 I        ~CA();
6 Z4 @0 Y. g4 n; [        void print();9 J4 `  ~3 |$ \- a4 x; c

8 {+ n# B1 @; a8 [) S) r8 W  Fprivate:
7 {0 M( D8 U# G4 r5 L        int i;' B4 y1 \* k7 w6 f1 g
        int j;3 t% `  f  |9 v& C: S! F
};
# z/ B4 {0 c* m, @+ r$ y
" g. r0 u0 j5 S0 T5 ]" qCA::CA()
# q& P) |3 P; z' z( Q{" T+ C; I2 P3 T
}% [% {+ O7 L, F; b% {8 _

9 P1 r2 P/ ]6 e6 V! F" O( jCA::CA(CA&one)
2 M4 ~9 ]" l1 G$ V$ o{( F5 \- U1 b5 i% w
        cout<<"调用复制构造函数"<<endl;
' Y0 M) ^& {! q9 n* L( c  Y        this->i=one.i;% I" K2 h" G$ u1 y, i' q* N
        this->j=one.j;
$ j; A1 t' C8 J3 A2 Y9 n}
- ?, {( }) ?7 v7 |/ T" D, T- d8 k# e8 @( {' |
CA::CA(int m,int n)" K# k' K- m+ q/ h7 M  C: A! z8 z
{
9 x! z! l! a: l/ n, f( O% ?* Q        i=m;
* F! I, J( m2 K4 w+ X' x) j        j=n;+ Y3 I/ |! x% k& f$ \8 }
}) d- ?& [  r; N7 G9 f7 p
% O7 R/ p$ g5 a4 r- s5 w2 i  J. M' }
void CA::print()
0 v, c# ~, G8 ^5 o* ]5 e0 u{, u4 a3 W8 G, f" h6 Y! }- [5 @
        cout<<i<<endl<<j<<endl;% ?6 a1 I$ z8 I1 Z
}
* S5 W- t! H: }+ X! j2 O; z& y5 i+ q& \, P1 ~/ x6 c0 C
CA::~CA()+ P7 A/ C0 w. R, g, T
{1 P# ~$ m. R# f7 R# ]
}$ i  Y+ o$ Z$ s
( k; j* N: R. d  o
#include <iostream>
1 w; P- N/ I! @% a$ q' `using namespace std;/ U/ H( D. Z8 g9 Z6 z
#include "复制构造函数工作原理.h"
8 F' W# E; c8 L; W& A0 U& p" \# Iint main(void){        / Z7 ]) Q3 _8 f) d4 j
CA a(2,3);        ' j$ p) R/ Q1 p7 c( o# g8 C; i
a.print();       / y. ]7 N. y% |7 P! H# O( u
CA b(a);        6 R8 c2 }1 y7 ]- g6 n( V
b.print();, J/ a/ K6 b5 p+ a' S) _8 s! K$ a& V
       ! Z% M$ W0 m! `' B; F6 k
return 0;
# B. l( i" E5 @5 n7 t, E3 [" G}0 l7 F! {  c$ w' A  v" [
, K' J* E1 d" M/ {- }  s# k
# ~# J# E$ E/ P; ~) A) D

1 z, Q- Z- r+ q5 ~/ u9 f+ D% a; P% m" R; k! M$ I' q
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:( l4 f. t# }  o( T4 u
1> 初始赋值时:CA b = a;5 ^& ]% u9 a, }6 {
2> 按值传参时:void myfun(CA ca);4 h1 u6 Y6 A# {# y5 c, W
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 * j: p# L7 R) l) e- x
复制构造函数在以下几种情况下调用:
0 O" m1 ]2 F( i" Y) j% t" f1> 初始赋值时:CA b = a;# P" p' D0 @% G( j9 _$ {
2> 按值传参时:void myfun(CA ca);

+ T. n* V3 M" Z# Z6 t第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-13 15:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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