鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
0 y1 S; b4 ~3 Y0 t' k' q  c+ W) q/ K/ h# Q! c' n! |7 J
class CA
. Z3 Z; i/ b2 C, J) f  C; z{- k4 t( b6 ]& B0 I; x2 U+ j
public:
" b, T, B1 N- A. ~( v. A        CA();2 I7 f+ k- q  t3 q7 O4 U! P
        CA(CA&);4 u' E* R& V% }* T" M
        CA(int ,int );
4 g& y8 y3 |/ b& x        ~CA();0 i8 L& R9 v7 M- @
        void print();
. z/ R8 {3 Q1 k/ g1 B' B" }7 C; A& ^" e
private:" @. l8 y7 A. {+ N
        int i;0 \2 a6 ~* }. @2 Z* _7 ?+ y
        int j;( y: G' T6 C3 Q6 o# {
};
5 Q  g2 d$ _. T2 ]1 w2 M! h! H& X; l* D# D9 o
CA::CA()1 }/ u; m: w$ v2 j6 h
{  [& o! p, v5 _) }8 h: V+ d$ i
}0 I2 y( t% K# o) w8 S$ M

2 o/ O. x8 e$ p. K0 oCA::CA(CA&one)( `, d4 ]! `; _
{8 A5 p5 T, ]' U0 w9 q
        cout<<"调用复制构造函数"<<endl;: J& b% W* _' p
        this->i=one.i;& ]% E2 [& Y9 A6 e7 k! g/ E
        this->j=one.j;* ^- |9 m$ G) V, ^# G& |% T8 J
}! M, ^% e( d* G4 L, u6 {& r

3 D. B: F) T; P1 [0 f- b. \CA::CA(int m,int n)# N: V: M& O% \
{6 Z7 q* Z8 {+ z, A7 L: P$ ^: v
        i=m;+ L. V. J- a1 B& T3 _
        j=n;$ D. e! i- [, U+ S+ i+ \
}
( u" j# P' g4 ^. s6 H* s
4 |' }6 C; X' [: hvoid CA::print()! Y+ S- t( d+ M) j+ k4 W
{
6 {* d, o# O/ v        cout<<i<<endl<<j<<endl;
: o5 ?1 X0 ?" z! L/ ^}" }+ Y! W7 t! d) R7 _

1 R: N/ r/ s4 B/ k2 RCA::~CA(): L/ T' I! Y/ V# e/ k0 C9 [' V
{. M" H; E/ c4 ~" N4 {8 q1 F
}
( W8 m/ s/ O4 _$ m% }) W" m8 x  A! G. Y& O! t6 O9 E- J
#include <iostream>
* Q8 f' |" @, p% s! Lusing namespace std;4 X1 A+ G: _3 n
#include "复制构造函数工作原理.h"  ]; B0 |  ~9 T5 n; {+ @8 k
int main(void){        
3 k$ y6 ]: M6 W- y+ n" nCA a(2,3);        . ?' g% o% N- y5 p3 J* r
a.print();       0 Z* z; d; U! ]3 C- C( r3 e! C; M
CA b(a);        ; p' n$ X8 W' E! `* L; {6 ^
b.print();7 Q6 u2 a" u+ K& {
      
' x, t6 |( B9 z( J, D- s) e, h return 0;
* {( Z  @! W! D( j& h; K8 f}  x! b5 N  l9 E$ S) s
$ I9 [& q( P& g

" P8 S( b+ y' Y+ o6 y
2 E. b! M; K1 {$ e. W; C6 C2 `  e1 [& i$ E4 ^) S: ~: Y
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
9 {4 @, k% {. I4 A- F. p# _1> 初始赋值时:CA b = a;( E0 e+ I7 h, c& A0 o
2> 按值传参时:void myfun(CA ca);6 e) g" K& x6 F; F! L4 @/ B1 U3 |/ U
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 4 a" n2 a$ y! k+ Z( R( E7 {  ]
复制构造函数在以下几种情况下调用:4 J) H1 V$ d2 c" j  Q
1> 初始赋值时:CA b = a;
5 p6 g0 v5 I/ R. T6 V2> 按值传参时:void myfun(CA ca);
) I' ]( }- b1 P5 h8 N" w- s
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-31 12:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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