鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
% i2 q4 R0 O, |$ C% s" j
- B% l" Y0 R2 ?& ^: _class CA
4 A6 |( t2 `8 |: D5 V{1 f8 f, p/ h" @
public:
5 Z) D! \4 ~' }8 A) ?, O4 p        CA();
7 g: A- Q) z% h- j' G$ C        CA(CA&);
1 E1 o( W4 k3 {% k        CA(int ,int );
4 C! t" S3 O4 n/ I# Z, }5 r        ~CA();
- y7 g# Q6 A( ]& {1 N6 H        void print();1 {2 Q$ v* t9 @( G8 D

, C: t* a! ~# g" [7 ?( x0 o+ fprivate:
6 k3 j# Q, T9 O. i! _& s  e3 ?        int i;3 c; G( \) C6 `5 Q; a
        int j;7 u4 w2 j0 z+ t% d  Q0 _# n! J
};
0 _, a2 x! Q9 a) _: |, {
6 S6 {, I9 c7 f2 TCA::CA()
1 K6 g1 a& ]9 \: J; [" e# Y& P8 F{
& F. i! r! H, R# b3 }9 A9 V}
# a7 B9 X; z% }& m" B$ o% I- k* \; [( ?9 S; q# ?' }
CA::CA(CA&one)
/ z9 L6 i$ t& F+ m* h{
$ }6 D- I) G. X        cout<<"调用复制构造函数"<<endl;) D) _" m! z( N0 x
        this->i=one.i;
& D' a* x/ l4 f/ T        this->j=one.j;6 s; r" y) ?5 `( \
}
+ P4 E& X& {$ \  l  Y; Z. ^" _9 w9 T* l  y3 B
CA::CA(int m,int n)
3 V9 H: P' i/ X, o( G& |* w{
1 L  b2 y+ ]2 s; p        i=m;
, Q5 k) m) G+ P% C6 d  Z, j+ \" l  C        j=n;
' [6 V  s5 g, l: w1 b$ A}
2 A1 J1 R. e& s8 I6 b
  d5 f5 `7 t' Y" y, vvoid CA::print()+ X6 ]4 @8 o% I/ O( @
{
& ~: i8 |+ v. l+ F        cout<<i<<endl<<j<<endl;2 _/ P* u7 S, S# }; Z
}
0 L6 a$ \5 g; ~8 G; h" D& [3 [* O/ N
CA::~CA()
) g0 J# T3 n  ?/ ~{
. K5 [0 d% H9 e$ |/ c4 n}  `: Q4 k' p$ D

- Z* ^% `$ Q, ^9 E& m#include <iostream>
# o/ w9 `9 H+ _' k; p7 {3 kusing namespace std;; f' P$ B  h: U1 v
#include "复制构造函数工作原理.h") ^, o; e( t: n% X% u4 H) F
int main(void){        ; |: F9 ?/ X+ t1 x
CA a(2,3);        ) u' f* g. c/ ~; i3 F  f
a.print();       # l6 M! F2 J7 K3 l; `% C. c; g
CA b(a);        
( T8 F3 N8 ~% K+ C6 @b.print();$ x& m$ j7 U2 D
      
* r' p, i) N; c0 K. P0 t* ~ return 0;
% l$ E2 [* A, ]}
4 S' w  Q6 T+ x
+ `4 w% l/ w$ ^6 V' u2 B% l. N& ]3 r" T- u, K
" }* g5 k5 H. w# f1 c% u

% ?3 i  j3 G* {+ z) Q$ a
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:& p6 V2 s) T7 G4 [5 b7 y8 b
1> 初始赋值时:CA b = a;" {2 S6 u' _2 X- w$ c! d( P
2> 按值传参时:void myfun(CA ca);- @0 Y; I7 T$ M  P
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
; F1 f/ n$ v! A3 l  u复制构造函数在以下几种情况下调用:
1 {; {- ]% U$ d. D# J1> 初始赋值时:CA b = a;
8 v/ G, t$ J  l( G2> 按值传参时:void myfun(CA ca);
1 Y* J/ a) \/ H' b5 }3 E2 y3 E( O6 S8 G
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-11 08:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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