鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 2 \, M: P/ `2 P' I+ _
8 J- k1 p' m. F% G
class CA$ ?7 ~+ e, o+ I8 p5 W: x
{6 e7 U4 G) t& c, k6 k. g( \" r- v
public:; y3 `6 e! ]5 @9 v- _( w
        CA();" Z* G/ k2 F" E- y) n
        CA(CA&);7 j: K8 R  }0 u' z' h% d5 h( w
        CA(int ,int );
# x2 p- C6 d0 o, o2 `# a        ~CA();
6 E# `* r; W; S8 F- T        void print();
; m& v5 L+ Z% _( h* A
5 a1 B0 G) p5 f( |4 ^) ^private:
( `1 |9 i- p* p- P( L* f        int i;9 h: ~+ b, O9 f* j( t; t. I- _
        int j;
( i. K8 Q" u% n( w" _};
7 K5 y2 L$ C5 q6 X7 m
( [6 W# I3 N& @% `. B# |9 eCA::CA()
$ l+ v# V: t, d1 W{
, n5 b( C0 E6 e3 P}
6 S- Y' D* _. a- Q" ?1 B. }% Z$ V: {6 c4 [0 j) T
CA::CA(CA&one)  x- E3 Q2 `8 E! n
{
1 E( s' f; r: X5 A        cout<<"调用复制构造函数"<<endl;
  z; {" P* w3 E0 M0 M        this->i=one.i;
! o4 q. v0 c2 i  U        this->j=one.j;
! U* c% y( H! U% b: G7 I}
/ _6 Z8 r/ G8 ]9 S
/ T0 r* z6 B; m- C1 U; U! y, A& QCA::CA(int m,int n)
9 k  b0 T2 f- b{
9 ~9 @4 c5 }, O        i=m;
) }9 L/ w) x: z6 T' N        j=n;
  H  K9 x, h& G, |& h}/ `7 f1 a1 S; }* [8 ?; e4 W

5 F$ E. b" F  W8 ]6 j! Q; G( \# h* b8 bvoid CA::print()
7 ]" _) E! x' z3 ~{5 B8 l2 V0 {: n: U2 Z  ^( ~
        cout<<i<<endl<<j<<endl;! F1 R9 z4 H9 I6 \9 \+ o
}& }$ r  N* Y) @/ q+ d9 m- \
3 S8 r# _/ |7 m# a6 A) B
CA::~CA()+ C5 w5 q, n/ v6 j  m. u
{! x) p! h: ]! ~" P2 I! g
}" a+ N5 F( x" n) |7 f/ E

' D7 e) q! f: D* L. x7 S#include <iostream>* v6 v1 c  Z9 f' `  T
using namespace std;* L$ C; q, v/ A) Y3 \
#include "复制构造函数工作原理.h"* {  O: h, `7 ^- v1 B
int main(void){        ; }! }' |9 u( k6 E
CA a(2,3);        
. T& F) A; N0 `. ?2 ^a.print();      
" w8 l5 c: N0 P- m& b, k CA b(a);        ) W* O: L9 V7 |, G+ L5 @
b.print();
. L2 b% ?4 }7 v3 [( f) b5 r0 S      
) t: D! L' N. I/ X return 0;8 Z9 [$ p2 W. d2 p8 s* Z" U& `
}+ G; V7 N; q# Y1 C1 z

/ O8 H  H% f9 Z4 `
1 ~; {& b/ @; u: M( @4 p- K- o1 a  E. L5 [, {+ n/ L4 n4 z
  [  R& D' D3 B" k' K- i2 Y; ]3 v
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
; g) E. A/ N8 a/ m: `, I9 q) w1> 初始赋值时:CA b = a;3 f. `3 X4 F: X' \6 ?! j; T
2> 按值传参时:void myfun(CA ca);
. k9 I5 |! d7 G1 T4 T* w3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
4 }% U% d- _8 E$ F: W复制构造函数在以下几种情况下调用:
2 c, o  P8 Q, K  u1> 初始赋值时:CA b = a;0 |( W! ~! u7 E9 C! Y
2> 按值传参时:void myfun(CA ca);

" o+ z- T* `9 E; h第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-16 22:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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