鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 7 u* _0 c' [% v
4 p( v+ ]' r+ i. F* D% B
class CA
0 x3 [2 |- k. M5 {+ v. U' H{
" I% s4 N: a: P/ A% Epublic:
$ _- o# c( ^! j2 k0 C        CA();
& M. M% t- r5 l6 |: Z3 j* l        CA(CA&);& ?7 j6 x4 p* A) Y2 h% N' r6 f
        CA(int ,int );
/ t. m$ v: {% w" o: H5 b8 }        ~CA();; R. Y- e) i6 E9 w2 v- z1 s
        void print();
% O8 H. D4 I0 |; ?6 }$ ], K8 ]; w5 e" ?, e* b- b5 P+ j. |7 a, t
private:
. M+ U+ R! S2 U1 x2 T# R# Z        int i;3 @" x1 e7 J- y( h' `) P. G
        int j;
" R; ^9 {* R( j' A  l0 ~6 u};! r5 N2 S& `" k7 ?

+ Y6 p9 S$ t& y6 n( G& f. xCA::CA()
0 F$ {9 S/ ?. p) a: `; ~  o: \9 B{
' O" d9 y6 C  w/ h* |' K+ Y: h' S}5 K! X& w' @+ z4 J9 Q% O% z

: p, L( y' s* |! B9 @% }: ~' nCA::CA(CA&one)8 ]- @. @& ~8 A5 c7 x4 J5 o
{7 B7 v% c& d0 _5 S  B
        cout<<"调用复制构造函数"<<endl;, y; h9 E/ I; e! x
        this->i=one.i;. ^$ z* U  g- u
        this->j=one.j;; ~3 s8 g. _9 m! N
}: `& w' n1 i# X& Z

0 b0 e8 n7 d$ g0 R9 n: b$ \" YCA::CA(int m,int n): h& X; n- d4 G' C
{( d$ D$ }. R! s, s1 c: S8 E1 p
        i=m;1 ^- D% h& F" U+ m( N7 @) R
        j=n;
5 v# Q4 ^9 W. G}& v+ c/ |% i/ L: T& V: @

. J' O/ G0 v8 B8 u, u; e' Z& mvoid CA::print()& ~& ?4 l, M- Z
{
; b( [5 B8 A( V% ^2 Q        cout<<i<<endl<<j<<endl;
( F1 E6 l& C8 S" e6 _}. q# b, p1 D# v; \! c8 c7 b8 w" c

2 n: D+ I5 P9 x8 cCA::~CA()* ]3 |7 R9 e# x- D+ X
{8 n' _: y  {# B$ R
}
$ j, \% z' I0 d& o0 {) G
* o3 V7 f5 w! z5 j8 J! }#include <iostream>
/ s) k$ O. t! [4 N) vusing namespace std;3 k6 S/ ]0 _+ Q- {) A& y  Q, F
#include "复制构造函数工作原理.h"
& [  X. W* I  i- r9 Xint main(void){        
( j9 ?. o/ r+ MCA a(2,3);        3 ^9 t8 m6 m6 e
a.print();      
1 m- ~% V# z( I7 W) \1 v  K CA b(a);        ' P6 x! i; o3 N! G! w8 o
b.print();
( H4 R$ l5 B4 u: X      
3 {/ i0 E- p9 `6 X return 0;4 ]$ I, P8 i0 r6 C
}" v/ n! e7 m$ M. ^

/ s0 v; A! v) _0 F6 P7 U, u6 Q) P3 C1 |( }4 E- b  K" y
1 e" u8 r; O% ?
% m0 s1 F7 k$ g# U
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:. R& b% g# G) B# B7 |% w; w- M
1> 初始赋值时:CA b = a;
" {0 W# x0 `2 Z2> 按值传参时:void myfun(CA ca);
- L6 V2 \! |$ C2 f/ u" A. V3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
- k( U/ L) I: w# ]
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-6-17 14:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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