鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 0 V+ X1 B: z& `5 k
: X1 ?; Z/ M7 L! A
class CA% v0 b9 p" R9 p- C% c
{1 d. E  ^% p% W
public:
, b) G) L0 d7 S1 [$ ^2 W        CA();5 Q  R: m2 t& d5 r) N( T* U0 q- N. C
        CA(CA&);4 [8 W! Q! i) t9 ?6 d$ z( c
        CA(int ,int );
( V+ o' n  c2 f8 k" o, Z        ~CA();% l) F3 L- ^+ L8 G: _. V# l% x
        void print();1 h' g" G  t( ]0 `1 [* q

7 [% f5 n6 i# g' @: N6 Eprivate:
1 ~% N! t  G9 Q. u+ M. m        int i;
6 H8 J- T% g& P, x  G' m4 U7 O' B        int j;! L9 i5 x* G0 }' {& t; b
};5 [, }& _4 n# _1 z" x

8 D/ Q+ E- ?1 B8 s0 d9 s, S" p; ]CA::CA()7 y3 K% B% S( t
{0 k( j7 ]  P+ L! x: x
}
& a0 t; ^3 n# f( v1 m0 p" |( M9 |8 O. e, _6 I) H' @9 `2 {
CA::CA(CA&one)7 F% C$ f5 `( L- g$ M- @1 ]
{# D+ u  B5 P/ d7 j' w7 q/ r
        cout<<"调用复制构造函数"<<endl;4 l9 ]9 u+ w) }* v2 _6 y6 V& z
        this->i=one.i;
) j' G: _5 k+ }3 y3 S+ Y& U        this->j=one.j;
6 o! U$ R, z% @+ N2 K}
  ^4 ^5 w  \' u) l( _) s6 Y
, l+ \/ f% c8 b) K1 UCA::CA(int m,int n)
. c' ?. z5 F5 O{
9 L8 q0 @- V9 i        i=m;& c9 @0 O3 u7 ~# w4 V- f) @
        j=n;* j$ O& Z! c# l2 @
}7 q' W9 d' O' _# v5 a1 I: z: g0 m

/ B! S, A1 G( N' H# Yvoid CA::print()" V8 F2 m7 x6 l/ r1 G: M
{% ^: K4 e/ @  x# }/ r$ s
        cout<<i<<endl<<j<<endl;, {1 W; `' j$ [0 n7 b, }) G
}, F. {! b, G- t- {
  M' h$ E- f2 g
CA::~CA()
7 Z+ p" y5 \% P{1 D. B5 T* h: R5 J' Q3 x' |3 [2 ]
}
/ W: a/ y: F* |1 s" O+ }! C4 Z1 `- g/ X( G
#include <iostream>! z) k" E- R  u* v
using namespace std;
; x0 g6 Z4 c; f( _#include "复制构造函数工作原理.h"
4 C9 f( j7 K6 aint main(void){        5 S6 v3 P; y0 _: U* j& `: X' W
CA a(2,3);        : p9 ?& J( ~' d9 J' \$ H: v3 `
a.print();       ! ?) U; `8 ?% Z" o' F
CA b(a);        " N; ?* Y1 q6 u0 ~" y. T5 c
b.print();9 ~: z! ~4 ^. s
      
* x, c% P" Q. D' B  Q2 r4 [" O! y4 z return 0;1 }5 f% O' T7 o& X$ ]  Z3 J3 }+ ~
}5 z: h% ]/ W) w" w; a

! i" \7 m1 S: M/ e8 U' i( M6 L" o( ~8 s' O% e
) x/ d, J  W* j9 ?
6 s9 O& Z# A! }$ {
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:7 l, |1 K7 S" n& t& n" h
1> 初始赋值时:CA b = a;3 m+ H, ~4 y+ M1 ?% v5 v0 ~4 |
2> 按值传参时:void myfun(CA ca);7 d8 ]+ A9 S9 i( O6 Z& e
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
# A. T* ?& M) b7 y7 q复制构造函数在以下几种情况下调用:; l- u4 D! {& B) N- `, A. D
1> 初始赋值时:CA b = a;
+ `) l3 Y4 d- f: ]/ A2 W2> 按值传参时:void myfun(CA ca);

& _5 c0 Z% P' ^1 T: @, o7 k2 F第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-15 05:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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