鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
& h8 |9 M/ e7 t
' D1 f! y" e6 r2 xclass CA
+ ^. Q8 }# C1 v- g6 {6 _+ o{
" g8 o% p9 F: f1 tpublic:
9 E9 `7 a7 Y: a1 S        CA();  m) m% s6 ]0 C& A, P$ M7 M! I
        CA(CA&);
+ Z8 m3 q4 `. G0 v3 t9 S! S; C5 C        CA(int ,int );
( [: j% Q/ p6 o0 D. L: b        ~CA();4 L: n- |% Z. b# ^
        void print();2 a# K, F' ?& ~' \' v& u6 B
" ~8 v8 E% z$ ?  F+ h0 M
private:
, B2 c: ~6 k1 i        int i;' i: X. ?8 p7 w/ u7 N
        int j;
/ p, o6 S/ E( x0 b- l};0 s4 `2 L% a0 \7 Z7 \( k+ B% q& Y/ u
1 w9 ?$ u9 E* t5 @
CA::CA()
" _( J, ~9 W4 r  A{' o9 p& o. C2 ~: [. x) d: S
}9 W* ?* T: s* a* p

8 C6 f" P% @& f9 Q3 ^" n$ DCA::CA(CA&one)2 U# c* v8 J: Y1 A
{' t; a1 M7 A7 w
        cout<<"调用复制构造函数"<<endl;
2 p; W% ^) O' Y: W" ~        this->i=one.i;3 D* T# I# K( ]  O4 @+ C! p
        this->j=one.j;
( e. E; O& u4 N7 }; \( `5 p}
9 _5 `1 ^. ~. b8 g. p! \1 j# M. C
3 Y; Y- i& L- O  B- B/ w- [CA::CA(int m,int n)3 D& M. ?7 k4 m- a- ^
{
, k8 {0 S% k9 ?6 A* H3 n8 a        i=m;" k* K# h* C; [. d2 P
        j=n;: q$ j3 I# `$ N! J
}
; w2 h5 x  f& ]( u0 i# V. p5 E  [0 E3 e! J
void CA::print()
& y3 ^2 R) p. b( T/ t: ]{6 }5 J  Y7 n% b! V
        cout<<i<<endl<<j<<endl;
9 a& V" x9 C" `7 a5 ]}
1 |: w+ }: R+ v6 {* v/ p
6 e! M) L3 E2 R2 h: N" k! eCA::~CA()
! v6 n2 s. m+ k( A- y{/ ]* r; n& a6 a' T3 B5 \
}
) G& a& e7 ]- ~5 O  F, h9 C9 G8 T) b9 Q& m6 R* m8 h, m& N3 C6 W
#include <iostream>
+ g% N" l* h, musing namespace std;
8 H) z" [, V& ]#include "复制构造函数工作原理.h"
8 P! O0 C7 }$ v. p3 F1 Aint main(void){        # Q  u  W) |* T$ l+ q  q
CA a(2,3);        0 l$ J. e2 f! X  e1 K
a.print();       * \7 }" o* @4 O, p+ ]0 z+ Z
CA b(a);        
" o: }: [4 v, Q9 g0 a/ nb.print();+ L- H( Z% z, y% t4 s# p1 N
      
  ^2 w8 x+ @' x6 v return 0;
2 d) D+ Q8 S( g9 h/ Y" R# @}7 G$ k) @& U) @3 V: o0 m

( l( ]* F: j5 s! |8 k
* e5 F4 v8 u( [7 w7 `, `" p1 _- s) w, O6 r

, Z$ [7 M9 d2 m* J
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:- \7 I, X6 I% Z. B& v3 y& e- x
1> 初始赋值时:CA b = a;3 F$ z2 K6 D9 s" f3 V. q0 y
2> 按值传参时:void myfun(CA ca);
, ~, W6 B3 Y4 w3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 & |0 @. H) P; U' C& S
复制构造函数在以下几种情况下调用:' G' |/ Q5 D7 ^. N+ Q: W" i  j7 g
1> 初始赋值时:CA b = a;
0 \  V% D/ Y% A1 M0 O0 ~. s2> 按值传参时:void myfun(CA ca);
% ~# D. ?5 O; e: d
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-11-11 10:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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