鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
, {- g9 b' e. o# z, X
7 ^2 c$ |5 N  \; L! z- z" ~; P7 q/ ~class CA0 n" C, Z6 I2 Q3 a' R7 C: P( E* D
{2 X9 o' t2 I% C) B6 y) S; E" S$ G
public:
* e' g$ F6 V( R; H5 S: w        CA();# B) D1 M6 v, v+ X5 F
        CA(CA&);- y2 V  E* [4 d7 A$ g
        CA(int ,int );4 b- t5 `7 d  I6 r/ t
        ~CA();3 B/ n! P$ O# U1 ^9 A% z  c4 h
        void print();. Q* Y/ Z; v$ z/ [4 Z
9 I: y* T* X* I
private:# I) |0 @$ U3 X& ]  U
        int i;
. c3 H4 _2 y& F$ F' V$ c9 h        int j;0 N5 Q8 ?0 n+ o! l
};
4 n. P4 d' p" s2 R- `- e1 e# I6 H% ^4 G, g8 H& l6 l
CA::CA()
$ `& V% [1 b! p) ?. W{
6 L4 ]) R5 w$ @- u, C}
0 _7 G/ |# F3 L7 \, s2 Y
0 F( e% g/ O& C6 Z& \5 q# TCA::CA(CA&one)" I  q$ _& v6 \( W
{! E! |. n8 \$ S, e. k9 t1 i; w
        cout<<"调用复制构造函数"<<endl;3 r3 c% L( ^% x( l0 @; b) [
        this->i=one.i;% b$ x; v" k; `, j
        this->j=one.j;: N. o3 c( C9 u
}
% F& y1 W- S0 J1 x
, e$ q+ w$ s  G0 b! t+ ^CA::CA(int m,int n)
" I* x( M: y8 L  r) l{
% c/ O+ |. j7 B: t" n/ Z/ r        i=m;
; X: n, H# ]7 _, o  Q* P- \; W        j=n;: v2 {9 D$ {' y5 i
}3 [: b4 S. q  b% |

8 d! j3 b* L' N3 g5 x" Tvoid CA::print()) V- x+ A* n) s% t" K5 l! L* p
{
  c2 ~$ `; E# V; B  Q9 N/ H/ e        cout<<i<<endl<<j<<endl;8 x% T- ^, F! o
}
, L- |  j$ a9 [: x0 |. Z5 Y5 G9 J/ l' F( E
CA::~CA()
2 s# y' k- i+ g% x1 \1 P) r{
" J/ }0 ?7 E- ~}
( K1 y* g/ c9 g& h1 H) w! g
5 [0 Y; l( f9 h9 |: c#include <iostream>0 }  K( U3 @1 _' A& j% [" d
using namespace std;( r: q" W" R# ]4 j' _
#include "复制构造函数工作原理.h"
) a" U) j( E7 b( U5 h+ q$ Nint main(void){        - C/ R& ]( d+ u0 e
CA a(2,3);        
3 W! N& L( M" @& `: ra.print();       / m+ j" ^5 O0 m/ I. @7 A
CA b(a);        
0 `5 B, u4 u& u& ^2 ]$ bb.print();
- @) ?6 U$ ^+ c7 [, u, l       # V6 V# q5 W+ w/ G
return 0;8 T" n% q; f% e" @
}
7 u; ]$ s  I$ T4 T* I, s
: x8 ]' y' Y5 y9 H- p; r$ x! I: f& _2 X
6 x4 V5 c* c1 `! M5 B; }. m
# K  I. P, E% q$ C4 O
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
( D2 W" W; Y7 t) ~, P- x1> 初始赋值时:CA b = a;0 n$ p& A; |# C. o+ T# ^8 y
2> 按值传参时:void myfun(CA ca);) d  l% [, Z9 I7 Z9 {" i
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
# R0 o4 l3 R* S$ R- V复制构造函数在以下几种情况下调用:) J  E  \- O+ g, ?
1> 初始赋值时:CA b = a;/ Y/ O/ v0 T* m3 N! v
2> 按值传参时:void myfun(CA ca);
5 E! g6 M6 }% m( f( _  ~
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-7-2 15:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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