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

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

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

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

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

×
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 / X1 Q# \6 S3 b2 |; \
; f; T4 R- A) }! \* f) O) Q  D
class CA* s, x( A0 }2 A  b' C  a
{
, O# a3 N1 H- O- e$ |/ l! Apublic:
. |" @) P+ ?( Y6 @        CA();' p( J- P2 k5 @* w4 P
        CA(CA&);
& F) u" j. l4 _# h4 z* v        CA(int ,int );1 J0 |: N& Q0 W$ I
        ~CA();
2 @/ x& q, ^7 m5 T; H+ _( m5 J        void print();
# ]+ V+ `5 C, |7 f5 M1 U7 o1 m4 [+ Q5 r5 C- a; S( K; d+ u, Y1 y
private:
! M! e( {. F/ X( q7 x        int i;; d3 ]. G# ]" L2 \# s
        int j;
7 L) j. ]" r! j; b6 V6 |8 I};
6 e. B! h2 J* A1 b% Z1 h: C/ z, p5 h
CA::CA()
2 {5 Z+ a! \" V& ?4 `{
9 u+ [8 ~6 y$ A9 ]% `; V# V4 v9 m}& ?& V3 B' |# ^$ t) S" O

7 d& C+ F' m' I& }& V2 H$ y2 bCA::CA(CA&one)3 m# c0 j4 P6 n% \2 J# O: L4 v, P/ ^
{( _# @" t9 J$ _# S  t/ J* C
        cout<<"调用复制构造函数"<<endl;' s. `. o  V/ ?# A3 r2 ?# w
        this->i=one.i;
! q  N' p9 y! g+ u5 p        this->j=one.j;
( _6 M: |  m! Z+ E$ P}
. N* T! g6 V  \" \, J8 ~9 ?' w
CA::CA(int m,int n)2 w4 T' W( t8 Z3 A4 z* ^) ]
{% n" x3 k! o0 {/ k) x5 c; G
        i=m;
& k- g% B$ Q$ m. }6 \        j=n;9 K2 t- I/ n5 @& g2 C6 N  y
}
( e& S. e& U  }! V) }1 s* M
4 K1 D5 H) l1 R0 tvoid CA::print()
$ l) H) _* u" V5 t0 x/ W{. g8 U! l* Z) _: {5 ^& t4 F& v* C
        cout<<i<<endl<<j<<endl;) V) q- B8 o+ H& j  |8 W
}
+ ]' B, l. e" [- K! }( Z. y% d3 l$ \" N- L5 O
CA::~CA()0 d* S7 N- m3 U2 J8 d6 M3 Q
{
( w$ B1 C) N& ^9 x5 M1 g}
/ o. y1 V+ ?6 n. S# }. l
2 B; y* u, ?! N4 h) ~. P( k5 a#include <iostream>
$ i9 P% l7 N% a1 g  i* t1 _0 yusing namespace std;" r" _* G8 ~* {8 x- C. C/ G+ \
#include "复制构造函数工作原理.h"8 E2 E7 U& x1 J) n: M  R
int main(void){        
0 T  b( j, d, V5 c7 t/ JCA a(2,3);        
# O  @) J" F& a. Z, Ha.print();      
+ |1 }5 h. |. _2 t+ V; j CA b(a);        : `, r) n4 ]8 E: y, g( B/ d
b.print();
. u7 L7 a$ p9 d       ; V. [2 D# c1 T6 w( N$ U
return 0;
# J" Y+ R. U5 H% S) J}
  s" V, z0 P9 u+ N* t4 m0 W' r3 p9 m4 `8 Q0 m4 n& D

5 s% D& f$ k' e  v
! b& Z2 L' C! _1 d4 Z3 S& a2 X. g1 O* g, w2 c
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:' i- r- H6 T; x$ O/ E8 T3 s: L
1> 初始赋值时:CA b = a;" Y. Q- Y. U8 L9 C: H8 N% C  \
2> 按值传参时:void myfun(CA ca);
# X* A8 q% K/ [3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
回复 顶 踩

使用道具 举报

 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ! f; {7 e' T. a. W
复制构造函数在以下几种情况下调用:2 _& T2 J6 Z# W2 R) O, H& p( d6 i
1> 初始赋值时:CA b = a;
$ J, F4 j- {' A: H& Y7 y1 f! [: ?2> 按值传参时:void myfun(CA ca);
/ n1 N: ?8 R7 b3 }% A
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com
回复 顶 踩

使用道具 举报

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

GMT+8, 2026-11-15 20:52

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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