鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 9 z' F# g# q' T6 i
* d% v+ F* t+ C
class CA
9 }0 C4 x) j- {5 G2 ]+ d: s{3 u+ n& @$ d; W, J
public:, r- J/ Q: I6 f" w# W
        CA();5 U# o1 A) W, S5 C; R# `
        CA(CA&);2 Y, s- ~. g5 p5 I( d6 q! X9 q
        CA(int ,int );! P% n  t1 x1 }$ s
        ~CA();
) }( ]; z5 {+ o! J9 C5 I        void print();
9 p8 f4 Q" Q* ~  F$ n" [
9 d* y0 [0 w2 V4 V2 |- D; aprivate:
/ _. M/ {( P2 E: `        int i;
' p& D: l. ^7 f  p: ~4 h1 D; P8 x/ w, Z        int j;$ c+ d3 D7 ?) \0 F! v/ ?
};
6 r. q1 r# w0 f  [$ r' |* l' T$ H, I8 z) b0 b2 ~7 Z$ M9 ~
CA::CA()6 a$ J3 A6 A8 y) T; h
{2 o: `  d( n2 j: W- c9 U# C
}# _0 V6 B, N! U3 F3 p
% Z; @# N! U/ ~2 f9 t, L
CA::CA(CA&one)
9 R, h: S' i4 p9 b1 `+ u{
; V" q5 [. K. k4 q6 B5 `        cout<<"调用复制构造函数"<<endl;
4 \9 h+ R$ r; b+ @: V% H# ~; `% L        this->i=one.i;/ g5 x, [5 \% {0 D- d+ j$ y
        this->j=one.j;
: {' P5 p1 c: I& o2 N4 o$ w6 @}0 y+ `: O1 m2 [7 X2 a

9 O% `. L! N& _5 {* y/ ]0 iCA::CA(int m,int n)
: [# x# M6 o/ |# z; t1 |( S{4 h6 K/ [. d% g% S! w, X
        i=m;! z8 j1 T$ v! s7 O% X. P
        j=n;
: y4 [5 |+ ]: ]& F2 s8 }9 c}+ M1 |+ r, q' Y' {7 l

/ p4 \( e+ m9 D8 p/ Pvoid CA::print()0 b. K( Y" ?: x1 z2 Y
{! ~/ I3 {# U, d$ Z& k
        cout<<i<<endl<<j<<endl;  H6 ]$ Q0 N( m9 K/ R: X; ?! m
}6 L- F; X. Z- \' d6 w0 z' G+ n$ P

1 b2 ^, Q. r9 d5 ]/ R, ECA::~CA()
% c. _+ L$ R: ~{
; ?2 _9 W" V* K$ ?}( ~9 p( `8 ?5 ?  r! @# a0 y

! |9 C. U; J# z, q. ^#include <iostream>4 l: \( D- v$ g4 E+ Z
using namespace std;
0 l6 L6 `* F$ _* s5 ^6 n6 p#include "复制构造函数工作原理.h"; T' ~3 V2 k- X6 ^  I) f0 K
int main(void){        
# P% L: |1 r$ \) |, TCA a(2,3);        
( s( _  h  e  `- m1 r. ma.print();      
; f5 D3 `( }, }0 n% \- s" \  |1 O7 U) ^+ a CA b(a);        
( C. q: S& L& hb.print();
; l2 W& S( H) w# V+ J4 u7 K+ t      
+ h! z5 Z' C- }7 n return 0;
/ c4 c" Q6 I. U- }% L, R}
% A2 D8 Q' h& c# W! J( w
0 B  h  v4 d( s: O, I( U1 \, h2 E9 z0 C2 i
2 `$ E' E5 Z8 j- {: t
6 k$ k7 C7 _3 j: z" d
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:8 P4 a7 }* B" O' ]
1> 初始赋值时:CA b = a;
( r1 \; P/ L2 O1 [) u9 C3 W. `2> 按值传参时:void myfun(CA ca);' k$ _. Y$ ^3 C% T1 W/ _
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
, j4 |; p+ X( p+ {, L复制构造函数在以下几种情况下调用:4 x8 b8 H' P7 p% z. ~4 n
1> 初始赋值时:CA b = a;
6 d% d: ^! l4 j* e9 J2> 按值传参时:void myfun(CA ca);
" f* S) o5 C. ~0 D' Q$ R
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-3 11:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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