鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
1 W5 e  b" ^9 U6 p: v% V1 o3 p" R7 R8 z/ o! p: p" b2 C
class CA6 Q, E2 M6 h% p# r9 D; ?5 P* N
{
1 I8 v1 A: }. w! }public:
% K$ P! w- B; q$ ?) X        CA();
& @% V$ R1 Z" x/ N2 F# ~$ v! d        CA(CA&);; |' i7 i: T5 E
        CA(int ,int );& P- E( g+ K" I( t  J0 P9 r! B
        ~CA();* ^! C3 o* |, R% t
        void print();4 R9 E5 ?+ O. [4 h& Y; e1 ?* @

2 L  Q% o3 |) S; Xprivate:5 j& _  Q& ~3 t8 s2 j1 a3 F) }) k6 m
        int i;2 r/ `2 p9 N  Y  {0 Q& L& P" u
        int j;) n+ w* k; X$ G+ _- Z. A, l5 @9 ~
};- J, K% ], O8 |
, {0 K7 N  D) L: ^1 s) O9 R
CA::CA()
# A2 Y) M4 ?5 a3 K% {! M( r4 O$ R{# v: @) |) C: e( u2 v$ y
}$ \1 ~( D! w4 @; s% L
$ M2 ]1 k- W8 a2 L, N$ _) @
CA::CA(CA&one)2 u% e( \# a% R& ], B- O* T2 r- X6 k
{
2 V1 _6 ?  Q: V( X( p        cout<<"调用复制构造函数"<<endl;! F& L, J1 ?5 l, T- B( E
        this->i=one.i;
7 }2 T5 d- Z3 k5 R        this->j=one.j;
: M) h1 F: `6 H# j" x}
/ f+ }. J" o  ]. u9 G/ ?# B, s' R( P/ z( I0 r6 T7 U
CA::CA(int m,int n)
) T# R& Q# Y) p& G# v- r  r{
1 f! [; J2 G' S% r5 i        i=m;
0 e# b$ X$ z3 R" X$ B" Z        j=n;
' b" d: l) E( T- Y  ]! Z. ]}
) u# c) `* p$ H( m3 [
& s0 ]; W1 d. ?# U1 q8 Svoid CA::print()
  L+ s6 v/ s' V1 x3 k{/ @. M8 |; W$ X, Y+ v2 i8 F
        cout<<i<<endl<<j<<endl;  g2 B; e3 E5 ]6 _8 L' D4 I- s: {
}
8 Z! ?. E2 R2 U, p1 h. }# X% I, @& M& j6 @
CA::~CA()
/ @3 @- t; r- E{
: k% j! K; ?8 n- B% m7 W0 H}7 B" }9 G& m: }# r
. z/ D5 u7 [/ U2 _) ^
#include <iostream>1 V- a% B3 m! u
using namespace std;
/ w9 V, u% `! p- \: q. W8 t#include "复制构造函数工作原理.h"
7 t* T: H+ o% {5 G, e# J1 Iint main(void){        . {# C8 z8 E' ^. @
CA a(2,3);        8 m; m  r1 ~% V# q6 h. d9 a
a.print();       ! ]1 E* f  [$ q! q4 `
CA b(a);        
& |& {  U6 u% y+ O2 h+ F% _7 ~b.print();
; ^4 J* a6 l2 i+ c) _. m- m+ k; I      
- V! p5 ?+ i0 ^: t. v( v8 v! t return 0;
" H8 ^! ~0 n9 m8 O7 O" z# u) s}
# a7 R4 h' C% p7 r  U) X  ?- {( L
% U9 ^/ t; b0 i" A+ M& [8 y
; ?+ @, P1 s4 T1 J& S. K& L0 f

3 m6 E& ~5 P) }1 h7 z
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:' X+ F2 r% [3 P& J$ }" X, Z5 r
1> 初始赋值时:CA b = a;6 G1 B+ C3 `; v. a
2> 按值传参时:void myfun(CA ca);# N6 y& Y$ i) }8 y! W3 D2 u/ D
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 9 S& ?+ v5 G6 Z9 l0 ^$ ^- Y7 x0 N
复制构造函数在以下几种情况下调用:9 T  z- _% D/ {' |4 U; n0 z  R
1> 初始赋值时:CA b = a;- |" s. ^  ^) C9 k  @
2> 按值传参时:void myfun(CA ca);

+ ^5 ]6 _" r' M" Q; \第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-17 20:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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