鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ! n3 v% p; r- p/ ~

3 s' S5 i4 N0 a5 e4 P- ~5 eclass CA8 q+ _! k* H- E5 q; x% e5 @! t7 Z, i! i
{
4 {% k1 X: \/ \2 Z3 l/ v  `( Tpublic:# A* Q/ l1 }( q, C% P/ y7 G: X
        CA();. b! @9 ]. h( ]8 l
        CA(CA&);6 r6 {- r  q0 j0 H) U& K
        CA(int ,int );
* p) D9 u0 }7 h& G, l        ~CA();
* ~1 O+ a# W8 S& x        void print();# y% @) f) f9 S8 C6 I7 c. S( }
( c' u6 }. I9 `, s2 N
private:, A8 f3 `1 O/ M5 o5 Q; G( Q" T
        int i;
5 e7 Z2 N( M7 y8 U3 ]5 C        int j;: `- v8 [  }/ {( Q% F5 H" D5 r
};- x" w. L7 M* u, t, a8 x) Z& y

# @! t" v! c1 A) w- }; CCA::CA()3 d5 a7 W4 e# d  E8 A
{$ y# j7 k! G3 C; p$ r. t  u$ Q
}
0 u5 B$ A. V3 O- v4 N
# U( O' t8 @8 sCA::CA(CA&one)
: m/ ]6 V# z" ~) e5 ~5 C{
$ D) ~: A  ?5 V        cout<<"调用复制构造函数"<<endl;6 i3 S( |1 t! S- d
        this->i=one.i;, z3 e8 |7 z9 l: [$ F9 x- X! K
        this->j=one.j;, d  ~  b( G! |
}- U1 `# G; i, S: z8 s* Z

) e6 b& ]8 J& ^1 L8 s" }CA::CA(int m,int n)
! F- W4 _) j. I/ u{
" h; \8 m' K. Y( F. F- P( C# V        i=m;
& z& c1 ?: t3 R$ Z( Z) t        j=n;, V1 S: ~' c  b0 }
}6 m. v) l8 m! t3 n, N

& v$ m' Z& a; A5 ivoid CA::print()1 `* m& \# I- G5 D$ F- w0 V6 b& |
{
6 U3 x! h; t8 A8 G* X        cout<<i<<endl<<j<<endl;6 F7 \' S8 ?1 R- c
}, C( P0 P- O( O, t8 J
6 }4 A4 Y+ q- c6 A
CA::~CA()
0 \; ?9 L# q* m; M9 u{
) h0 ^+ Y& M+ x. E) N3 P; f9 I}* l/ t8 q' L' @  q; I
+ B$ a6 G9 q8 A' R, D/ A2 C8 f5 `5 q5 S- _
#include <iostream>
* W$ w3 ~7 D# v3 c& nusing namespace std;
) l+ k/ o4 J7 y. V8 ]6 x8 Z#include "复制构造函数工作原理.h"- p4 E: N2 @2 q1 n1 P
int main(void){        ; O7 ^1 w+ W2 B9 _) |) ~
CA a(2,3);        & d3 M! Q6 b. P1 r1 C2 W
a.print();      
9 l! L+ @. f5 D( a CA b(a);        
/ D, T1 q5 s; p9 r9 p" y  db.print();
3 V( q& k4 O! W4 l$ U. F* Z6 g  s      
; P$ |+ t+ ^. e% k return 0;- k; q: `4 J8 J' B6 M+ U2 C) n
}
8 G! `" U% [+ v3 R( U: ^1 `3 M4 ?# j. V
. e+ v4 ~6 \& `* n
" A. H; \& t; K0 `; ?
3 [' w4 s8 P. V9 u% N
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
9 D7 U3 U+ C$ w, n8 F1 a0 j: G" |7 f1> 初始赋值时:CA b = a;
6 i; H1 Y* E+ |8 e2> 按值传参时:void myfun(CA ca);/ N# [7 e9 a5 ~# i5 U
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 . C* D4 A+ s  j3 `9 S, h1 ?
复制构造函数在以下几种情况下调用:
, {# p* A0 p' r* \* x$ D1> 初始赋值时:CA b = a;
  Y" d. I% ^3 `- f/ P7 _0 M2> 按值传参时:void myfun(CA ca);
$ R# b- _2 v! B9 I. i
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-17 20:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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