鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
! x8 _" B1 F6 W+ |' u: A- |% a. l9 D$ H+ p/ R; V' U
class CA- R0 h" E) e& {6 T5 _" s
{: s! B1 O" g4 M. e# r$ B. N
public:
. h/ j0 }3 X& @  x. a" O9 e        CA();) H9 m% G# T: d
        CA(CA&);
4 I% G9 T$ i3 @0 K6 ~        CA(int ,int );
" s( J" |& @# T" n1 Q7 ^: K. o        ~CA();4 K  c4 T: \; j
        void print();3 ^  O& v) `: A+ i: ]! z/ z

4 t  m& F5 D8 c# B' L3 Kprivate:3 J( L3 c) A8 `$ n- K
        int i;6 Z& p1 h7 \( t% c& i$ V& a: i( A; q5 |
        int j;
. V# ]5 ^( W& v+ g};# \* ?- @' g) R* p9 `

' B) k1 y3 T; P8 |( \3 n- ?CA::CA(), q! O4 k( l( a- u2 a
{
2 _# {1 U& v( q: v; i/ W0 {}6 t. ]4 Y) e$ l# l7 J4 j
4 }) V2 X. V5 f3 V' \
CA::CA(CA&one)
! i  {2 E9 L2 u) L1 t4 ]& _, d{6 Q+ d* o$ J$ K9 k$ X  M
        cout<<"调用复制构造函数"<<endl;
% o6 d  N% S1 q! Z        this->i=one.i;
& p4 w" y2 d" v        this->j=one.j;& e: F4 T3 T) ^
}! N$ ?: N) x, ^" \( R+ d
, P# O/ Z9 u) h0 \1 ?
CA::CA(int m,int n); O" l. j3 R6 k! X9 e
{- n( B$ W# t4 X3 z1 X
        i=m;& V( a: z- Y# {/ I6 m& s$ y! }
        j=n;3 U3 ?/ V0 `: U! e, w! J
}
0 L! C! g) {, @! @5 [# h, a7 X5 b1 d( s7 @( f7 L
void CA::print()1 Q, R0 M/ ^9 ?8 H' i# C" b. D$ ^
{& F' S/ X! f" v5 q
        cout<<i<<endl<<j<<endl;6 z3 p' D) N) S( y: k
}
; r3 {& T8 P9 \3 o
% e$ q+ j1 ~0 |4 lCA::~CA()8 f! ?' G( o  W( h0 S
{
/ R# u: P, @6 N, n+ r) t( ]& g}0 L, W3 g& e% ^# h% G$ s. Z# r

+ e$ \; S; ~2 Q( I& Q( `3 F7 l9 O#include <iostream>2 B' j5 a) u$ P/ G3 l$ |' b( Q
using namespace std;
& c% M3 E. V5 t& ]$ c0 O0 F0 {#include "复制构造函数工作原理.h"* @' R9 F; P: P8 ]8 z6 s
int main(void){        
  H3 I6 t# \3 T5 `& R- m# R5 qCA a(2,3);        
, f& R& A  k" u: s- Ta.print();       & L8 c* ?: b8 o6 O* {6 j
CA b(a);        8 k/ S- j' |! }8 b5 S) b3 L
b.print();' o8 m5 _+ c$ F/ }
       4 p0 x8 `6 x* }" l1 \( l
return 0;1 h. w: s5 K" F# F1 \- ^
}
1 v; d7 k8 B4 k  ^! L, @, h& z5 O# l! l$ c' s" `  F9 a% e

* b+ T8 _9 o* s8 @! m
/ T7 h- N: N4 M- D" @* G! A2 f+ e; v& y5 ?* @2 H# b# f  z
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
4 W% _7 @: K+ q, B, Z% O+ w) F/ o6 F9 f1> 初始赋值时:CA b = a;. o- b  @/ K% r
2> 按值传参时:void myfun(CA ca);  N; L: x# s4 s1 k$ ]8 `
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ! K/ p- x4 y& z; T; |8 s' t/ q6 f1 H
复制构造函数在以下几种情况下调用:. \6 ?5 o7 ?& g
1> 初始赋值时:CA b = a;
$ @5 C9 y8 [; k( }, s9 T) f( |2> 按值传参时:void myfun(CA ca);
. ^. S1 d% V% P. Q8 g) a* Z8 n
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-12-22 02:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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