鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 : `- X0 E+ O: K8 j( q$ \: T) W
+ m" @+ Z# c* I) i9 G# Y  x6 N
class CA/ Y1 Y1 ?5 Y( N  a# c: x$ R; o; Q
{
: M; q$ }. k" q3 ^6 npublic:, d" b, u/ [+ e9 `" D
        CA();  U7 W5 R4 V7 d; V6 X
        CA(CA&);5 \6 D6 e+ V* h7 U/ d" n
        CA(int ,int );" @! O5 S8 R$ K, }& |
        ~CA();! ~! m% H- l4 R$ a7 `# P4 r: h
        void print();$ q4 b$ r8 b: |- q

; h" F, N( N& e; ]6 J* Bprivate:
- `* @6 H: e6 `) R2 e, g        int i;
" D+ D- u$ z4 @) V        int j;
) ?0 Z5 m' d8 |1 g# N; F};
5 ^5 [& ]1 |% A! G( A1 M
& s/ S& b) Y+ [: U7 D. ~+ wCA::CA()0 S5 b9 Z4 i) d3 D, |/ J9 b4 H
{- f6 u/ Z6 n4 V" Y, o. E; O+ U$ G
}3 \; g4 Z5 K; J/ y$ P
: m$ k7 Q" S) @: ]1 f3 P$ @
CA::CA(CA&one)3 h% k& F/ l" Y. z6 {
{
6 [7 S% H( F) @) X        cout<<"调用复制构造函数"<<endl;
' @8 X/ `4 \- E$ ~# w+ j        this->i=one.i;( N! a  {$ {1 _! V" T4 u
        this->j=one.j;
1 k: T/ n7 V3 [7 |: A0 }}
6 S$ ?1 c: z1 l" P+ ?* q+ Q9 P9 w) `, f! c
CA::CA(int m,int n)5 ^9 H: ?. E9 T/ }3 i. q% |) x0 j! v
{
& i* i2 I5 K% D" I$ [        i=m;
2 p: {  s3 \, [        j=n;
+ v  `5 c' b0 B) |6 k) t6 `2 `}7 R4 K) z3 _# O

; F$ j4 B' C1 |1 o" [6 N2 n4 i" zvoid CA::print()# P# T; Y* F- T* J% A5 O1 w
{
( T' Q# J% p0 \- S3 C5 Y7 s        cout<<i<<endl<<j<<endl;+ w- ~, g' S" N7 u
}
; I, ]3 T  v" X) v
. o- B! m: s6 Y6 |+ [CA::~CA()
% t! N) n$ c0 L8 C3 g" T{
3 M' Q# r5 l: F) ^. O/ \}0 g. k* b2 N, w7 ?

4 N1 t, j& L+ J$ X* o2 Y#include <iostream>
1 f' C' x4 `6 F' |7 G4 I2 Q/ musing namespace std;. M! W) s1 P2 O& l1 G
#include "复制构造函数工作原理.h"
6 K' l  R( i) H, eint main(void){        
9 d3 g" r: q' F) \CA a(2,3);        + U4 A' k) |$ z+ A
a.print();       # d) d1 y& \, W# r% z! L
CA b(a);        
% f- W  c3 s  I- X: H+ Vb.print();
3 a, h" b! C) f8 V% R( ^; V      
) E, d0 k2 g, F( E' G- _ return 0;
. R; z4 C  C) u5 @}
( ^* q% t+ u9 S0 ~8 O7 y+ p
9 _3 h0 w3 K5 O9 l: _4 ?5 R3 l9 X0 @# y- K/ D! x/ n

# j" Q1 k3 s! S7 r% ]5 R2 Y) u/ I, U0 z& b+ K# ]
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
! p' I0 v+ |6 c8 m" y1> 初始赋值时:CA b = a;
; g" B- d7 }, I& ^) H. j2> 按值传参时:void myfun(CA ca);0 y+ U4 }! z% t4 g/ c
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
2 z1 n+ O' Z' [: o- C0 M% c2 U复制构造函数在以下几种情况下调用:
5 Z; U; J7 \" h  _' B: `( n1> 初始赋值时:CA b = a;
6 U3 T8 g. O4 y# l6 S( P  k6 Y% c2> 按值传参时:void myfun(CA ca);

+ d8 V- C# X: [# t9 u第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-10 23:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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