鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
( M0 U2 J2 j! T6 I) X, s7 P1 W- l" u( a5 r/ Z' T' d9 J
class CA
5 s/ [, Q0 r2 E{% t. q2 C: `3 H4 }8 p
public:
) j1 y) E5 X6 q  o7 W. Q        CA();; ?' C" e: t" F2 `/ _
        CA(CA&);# t7 L6 T: n, s9 z0 r! {
        CA(int ,int );
4 _+ `1 k" Z  K5 Z        ~CA();
6 n& M( h1 |4 l. L        void print();! r6 ^- [7 x( p2 [" S
3 Y9 d2 A* ?  M1 ~' \# |4 n
private:/ V8 {9 V7 N# J; {( o7 t- w
        int i;" }. z4 l9 Z; H; f2 h9 y: b  x
        int j;
9 u. a! X4 `! E' n/ U};
  V" V9 H+ t) y  W1 ?  G+ a* ?- V! E! T5 f. ~
CA::CA()
# _$ P/ w( J: r! N{6 e& F" v" k6 l# B8 c- T1 y
}# Z, v. [+ [% X! u" x% y9 o' z; T, J' b

7 z! y6 |# E  G7 a, x0 ?# e7 z# CCA::CA(CA&one)
( S2 w1 |* K5 C/ e{& I0 i: f, ?3 W" _( x% j% p5 E
        cout<<"调用复制构造函数"<<endl;$ e: J$ F% @: m/ q# Q
        this->i=one.i;
7 r. T" d7 l! q$ ^        this->j=one.j;
0 D. [; t. b. P- `}: q/ ?( ]+ O4 Z: J$ T

  J& k/ A! G6 _( j; {* lCA::CA(int m,int n)1 V! V' Y: _( B8 ?% O" I4 Z
{2 A1 x# A; R5 F! z3 n
        i=m;
9 Y+ A3 t1 i9 b; f2 Q        j=n;/ R! L5 U$ ~1 ]2 U! B" M/ l
}# s4 J$ c4 l, U- s. h$ N  A5 q
2 f7 C6 W+ O) h: @# R
void CA::print()* X% R5 _/ S4 J! K0 G- R) N6 A* t0 G
{/ V3 w% U( \6 L+ n
        cout<<i<<endl<<j<<endl;
' `' o0 @; p6 f/ P}" x: ~" y# U2 w1 V2 Q- v

& c* {, g) L* C- W2 tCA::~CA()
% C- S) P2 Y! V* X{3 V0 `% B6 O2 p# G+ F
}
1 x; Y! I' |! X/ y6 V3 u5 f8 |1 Y7 [
#include <iostream>
2 q8 G% H1 J- n% X/ Jusing namespace std;
3 k2 q4 N9 u/ Q! ]#include "复制构造函数工作原理.h") m5 O) e) W. L( A6 m- o! h3 J/ `
int main(void){        
; d+ M! L" K9 g- z2 aCA a(2,3);        
* r- r0 \1 x" xa.print();       ! j: |% n  K6 G2 x$ z4 Y1 r" k
CA b(a);        7 C% f* I  o" ]: Y; L* `( L9 C
b.print();7 g" `# }9 ]# v2 e. g$ k$ R1 u6 g
      
: [2 I4 i* N# \  \ return 0;4 ]) q4 o7 v# n: ?3 b* T* M
}6 K, |+ `) ^1 Z
7 x5 _' p$ J$ H/ i$ Z

! M8 A/ w8 P0 ?0 D6 t5 |
' a" T9 z- ?. O9 d9 h
6 b# _2 ]  \$ Z, _* D
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
, z5 R& L6 h/ q- k: J1> 初始赋值时:CA b = a;
9 c; u! Q+ X% a; m2> 按值传参时:void myfun(CA ca);
! a$ T# ?9 C4 j; O3 K3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
/ m- K8 k: W2 [+ E. j复制构造函数在以下几种情况下调用:0 r1 ?# }9 ?, b  B& t* k; O. Z* c' C
1> 初始赋值时:CA b = a;
6 Z& B) L$ c/ q$ y# n3 H2> 按值传参时:void myfun(CA ca);
1 z9 V' h8 L& }1 m5 r; L
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-5-27 13:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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