鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
( d: E. n/ p( P$ v0 u1 \& E* J( N8 M% \8 x1 p. K1 y* G
class CA
# P5 }# @% l/ @{7 H; T) v: X. Q& @9 s
public:
* {; u' f, B/ {, H        CA();
* l+ L2 ^7 O8 B5 S* F& T. [2 L        CA(CA&);
. z. M0 M* A+ X  B        CA(int ,int );" ^: f6 t, L, J6 m, ]' [% U
        ~CA();
9 p; v8 k7 h+ y7 Z        void print();
' @/ {6 Q, V' |" p7 d, q8 k# w) O
. ?! U0 R, J* l1 A5 l1 b0 bprivate:3 v' s1 _/ m/ h9 r9 g- h( B' N
        int i;6 B/ a' e- X) ?6 K+ u% A# g) w2 p
        int j;& I* d$ S3 G( J) t
};, m. A9 A3 |  @; T4 L3 m* n( U
* h( W9 C3 @8 U1 t/ V
CA::CA()# v3 `( s7 {+ v; X! |3 T6 j
{
& @# d: K' z: k}
3 ]# w' B7 D9 s5 Z% r& u% N7 e. E5 o: E& G# m6 e# @
CA::CA(CA&one)
3 g) D" \/ ]5 L8 l0 r{
: z4 s. Z0 f+ Z! @1 r# Y        cout<<"调用复制构造函数"<<endl;" ?% S) \1 [5 {+ u  g
        this->i=one.i;. D. T. n0 U0 S
        this->j=one.j;
; n7 M6 G2 J) z, K  i: `}$ }* F* Y- ~. h

2 q, H0 m/ E; F: O7 z8 p, M& N  ECA::CA(int m,int n), Y& w( V; S% F( N) M: K  L6 Y, n
{$ A6 a) M5 G9 b  H1 L. V1 U- ~
        i=m;
8 X0 ?/ g; N2 G* s        j=n;! L5 S: r+ `+ W" J
}
) R! z5 A  @- Y+ C
' Q" u7 A0 r% ?2 [" a2 r, dvoid CA::print()& H/ N' o4 z7 Q6 n+ R
{
4 l$ _5 |7 }- o& F. N        cout<<i<<endl<<j<<endl;8 Q/ J! r. Q' l% ?3 k8 o
}
& D4 q4 \6 A+ D% J- }- w0 p, G) h0 [% }0 a- y
CA::~CA()& F" l3 D6 b8 y& X" }
{! g4 X# G# `' _+ K+ h$ |
}
+ ?1 U" Q; o+ v& H' ?+ f% U9 N4 z3 w; }2 G% ]
#include <iostream>3 b6 ]% J9 p  n, ^, G8 _
using namespace std;" a6 _/ S7 n5 I% r% y
#include "复制构造函数工作原理.h"" J3 f& p: J+ N! i8 @
int main(void){        3 }) N& |- Z! r' G  l
CA a(2,3);        - E- i6 S" u- N+ z
a.print();      
7 y$ s& h% C* r) O) B7 j) e9 O1 l+ y CA b(a);        
) A0 z! m" A- |& y$ v: Fb.print();
) c& @! o1 P! l4 O4 g( ]- U      
' ]5 d0 y0 v; G# i2 y; ^" D return 0;
+ y8 W) t& x& C( s: V}2 ~& F% g/ Y5 a
6 T7 b; M: _% k7 V' e, ]1 E" z+ `
( S" @2 D. ^  z% p% k. L5 U- H8 M
) _; Z4 I2 n) c7 B- `# q

/ v5 [0 L; Q. m0 y0 ^! D
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:6 {( A3 @9 u, e& U* c* Y0 A$ g
1> 初始赋值时:CA b = a;
5 @3 ?# u: T$ e: c; p2> 按值传参时:void myfun(CA ca);
( a2 n: ]' w, r0 G& ]* `3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
7 t& k2 {# y0 O  S! y复制构造函数在以下几种情况下调用:. K8 ^+ ~" a( h) ^+ f6 y
1> 初始赋值时:CA b = a;
9 m5 i6 }8 l! m; T: F3 q$ W  B; E2> 按值传参时:void myfun(CA ca);
3 Y7 N/ E2 p6 g& ^& m5 r5 R5 ^
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-14 13:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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