鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 % D( d# l. V: E( h# k

! `; c% r7 v9 {) \$ ~class CA  K/ T& J, N  c- m. Z& x
{
. N/ R+ R& g9 T% h; C! Gpublic:
- G. k3 O" D7 d* C8 w( N) H4 d        CA();
. Z# {! g* l# K4 P& w7 \        CA(CA&);, s/ B6 j8 b' b& i- U+ E, C
        CA(int ,int );
) y- {" I2 z5 W( U" ?        ~CA();/ }" p7 I" Z- n
        void print();
3 _) U0 q4 f/ K& b9 _; S% s& u
+ h) v: L3 C2 [$ [: |private:# g/ |8 C: [8 I8 }1 ]- b
        int i;
2 H! W% L# x1 n1 i        int j;( O- X3 [; [8 |
};
9 L, ~- I- v1 {/ b# i2 X0 I8 G+ e3 g+ b
CA::CA(): l9 e, B( O. G% N; k  i; E# D; N1 e; G
{% r/ F9 b) N6 t5 k
}1 h7 ~8 M! r. @* {# T4 q
5 c+ W5 [7 T, d% N. j6 t
CA::CA(CA&one)
* d6 s2 X8 r! J% l& _& m{( O5 U3 k, I8 u9 f1 c
        cout<<"调用复制构造函数"<<endl;
6 ^& b9 [3 [. h. C. G- `        this->i=one.i;
; m9 i, V* S! a) X6 ?        this->j=one.j;* U- h  d3 m: e4 r( r3 p
}
, w' ]+ ]6 _9 Z7 f4 d6 j! P" h; B7 v. m3 v& b6 E
CA::CA(int m,int n)$ I' ?/ r/ r8 d* \6 R# S8 {
{# H+ p0 J' A8 U" }# }
        i=m;
  N0 z, N' ]) I        j=n;
/ D' m+ G0 E! I: P. X" K4 a}
8 d/ H7 n# b7 i& V7 y. ~9 ?0 S7 {% [+ y/ l
void CA::print()
/ T& G1 O& J- B1 j{. h+ {" B( F- t, R# b: v/ j
        cout<<i<<endl<<j<<endl;& L1 ]( N, J% B& @
}
' c  M1 c' x; ~
+ N( q* l( N: ]5 fCA::~CA(); o7 u8 F# g( h- c8 U6 F$ K: ]1 M
{+ U% W* @# d6 H0 Q% R* z, x' b
}
, V0 @* C# I+ W9 }; ^/ l8 g, Z5 J7 X* @8 r3 D# N6 p6 S7 n1 G
#include <iostream>; T: ^  ^$ X5 X; R" C: j
using namespace std;! o0 [  ~! A6 H8 p: O3 ^8 f
#include "复制构造函数工作原理.h"4 X) O/ o0 p4 |" O
int main(void){        
- `9 I: [6 {2 ~% d6 U  bCA a(2,3);        
: D' F" `* F0 C* Z* k2 v2 Sa.print();      
& F. M6 O' r) h6 l CA b(a);          R4 {0 o2 |" o8 [7 B- D
b.print();5 {8 `! u' e6 t4 j4 i+ a
       ) _5 `# Y- U' r# T2 h
return 0;
" Q8 l! Y8 b. g' o1 R# a% i}
7 j& u( k$ M( O5 \: N5 t) ?  ^& O; t  x, H: I  o

& X: F* s: y% O; D3 h- u* F' M% y( O4 g7 V& O; B1 Z
/ H6 W# n4 r2 z7 q
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
! h' ^% D$ }# Y3 n0 j) j1 K1> 初始赋值时:CA b = a;
2 C9 `9 B7 ~: _5 L- |# g2 J) Z* ]2> 按值传参时:void myfun(CA ca);
! J! n/ E) N. N" B0 Y) b3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层

( o- w( a) B7 z  {; h/ C第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-21 13:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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