鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 # d) \. h7 i; C4 H* g+ h

. s/ E6 ^4 `9 F, |class CA
9 J8 Z* K0 x3 M5 o7 {{9 E  Z2 h2 R1 J; c2 `6 o9 |
public:+ P% f; L9 W' N2 a0 \
        CA();
. x+ y  @# v# \7 D/ h$ P% C        CA(CA&);
2 c8 T! o% K5 h0 C" \4 A7 u        CA(int ,int );0 r/ n4 e6 x* `  e: d+ e
        ~CA();
/ {7 Z5 L* z& T+ |8 t        void print();
7 m. Y0 u) p0 M9 g: ^2 v3 M  x/ H6 H9 N% Y+ d* F% |
private:
3 D+ w7 {* U( ^4 H        int i;
) P, @7 x7 L) h# ~5 i* M/ o* [: K* T        int j;
" c; S+ V6 G! Y  f5 e# t' ?};6 E! k2 ]  i5 w, F1 n0 G
" |+ z) C- Y6 g9 b+ Z# c& p
CA::CA()
4 c( @- v8 I6 r! f{
  D5 @0 F8 ~' S6 w. s% w}
: J( i0 n% I, K; U4 K' T8 t0 \4 Q' E" ]
CA::CA(CA&one)6 V8 F' P6 ^5 s3 g
{
. w& \' a1 c' B/ H9 K        cout<<"调用复制构造函数"<<endl;
1 r* M! p2 w8 ~" z( ~* s. S        this->i=one.i;
( ~# H" X, s3 M* ^9 [        this->j=one.j;
! r3 v3 V2 m. v9 V. z- d}
, A& f! b6 T% n+ f
# Q9 a) t8 E' V$ d- vCA::CA(int m,int n)
: _! n4 R1 I. i: P$ }2 U{- j) K0 w. F6 \6 B' c. w
        i=m;: w: [( a4 Y2 [3 A& L
        j=n;! L' G& y/ E8 |- Z( u/ u$ t+ s7 p
}1 g" S( t* j; c

& Q9 n1 i3 [/ H3 u, |void CA::print()
, \0 F3 ~/ R0 [& U3 `+ d3 i{
/ ]# W' g, o$ m0 [5 p  _9 o        cout<<i<<endl<<j<<endl;4 Y, j" g: I! E5 t
}; [6 H9 o+ h. H# w
& v2 X& G( r) C" k8 F- N  V
CA::~CA()2 D+ F- @8 U6 J6 }) z" K
{
1 T/ F9 D9 @8 x3 T}
, ]6 x" e- d; s& E/ i& @$ P' Q5 j$ J9 P# B- P. ?) B
#include <iostream>
( [) u4 V3 x; H- i; y: k* nusing namespace std;
  V$ ~$ ~. K/ G/ q, Q) @$ u#include "复制构造函数工作原理.h". X  D5 N6 m& l0 v6 N. ]3 U
int main(void){        6 a- m: ]" I  Q9 W, C/ k: i9 \
CA a(2,3);        
& e% Q/ u5 U. c# j5 O1 }- F  @a.print();      
3 a. U! a/ Q2 w( \  K' O( {! l! j CA b(a);        
% e* s' Q4 \, c( Z7 n. Gb.print();4 e/ P, k$ Z2 R" A
       ( T. y; K5 S: d
return 0;
* o# [  q9 R5 y* v$ n}6 q. _$ g) i, M, J) \8 ~

' \0 z: k+ P) n; s4 d2 {+ @: f
7 X- |# a" e& f
5 E- \9 h8 s2 ~7 N& B
1 t1 V# L* I) K& d2 P" n4 ]
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:) L+ `1 _* \2 ^4 R+ f# t: k
1> 初始赋值时:CA b = a;
2 e6 q' J& ]& @" v0 ^2 i) m2> 按值传参时:void myfun(CA ca);4 F2 d' A  B5 L, ]3 T8 I
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 , x9 \/ ~/ J3 `; J
复制构造函数在以下几种情况下调用:
* g# D& |2 f% k0 w) r( d8 ~* B! b1> 初始赋值时:CA b = a;
5 ]* f( L! J+ v4 k2> 按值传参时:void myfun(CA ca);

' v  N9 r7 ]& Q+ A第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-16 01:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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