鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
, y, r  l  Z; _9 k" O
  d  }# c& F9 n1 i7 \9 s" H6 _) e5 fclass CA
* \" n# H  k3 [+ @6 b; J8 L4 D{
% _' P& Q" b+ ]( Z+ Y" w2 {public:- u& g- Q2 e6 n
        CA();
, r) g" K; I2 H        CA(CA&);
6 N2 t% J: G! l        CA(int ,int );, c6 _: l  ~! s/ I
        ~CA();
5 K% O6 V5 L: R9 ^0 l- s6 Q$ N* T        void print();
# p: r5 N6 n9 K8 }! V
& u* X4 [7 J$ `0 ]private:( k6 r" Z. J! Y( Z; A) b
        int i;
2 N8 W- M# P. V+ {( G! F( P. j        int j;- c( |" j& d7 a% P6 ~
};  l% Z  ?) b3 g# W# R
8 v1 t! W( m8 d
CA::CA()$ ~5 C5 e( F. R: f2 P
{
* W/ J' M3 @2 {, [) d}
6 [- G  F- E- C; Z
) h0 e. v2 ~! y" G$ \- dCA::CA(CA&one)
0 U: N4 Q0 |9 i$ ~6 _! c( ~{/ G9 \4 l1 Z' |* y5 {  K, R- C% t/ z
        cout<<"调用复制构造函数"<<endl;
" D  Y9 k( L' b5 S        this->i=one.i;0 G2 q! E$ b6 P& F( j; o
        this->j=one.j;
3 w" E  t9 p6 k8 ]}3 t7 d, h4 \& x
9 n. J' T; {& v2 ]
CA::CA(int m,int n)7 D# ]& m2 x& X
{* O, r- Q' J8 h( n! e2 u$ @
        i=m;
7 n, @) o- Q/ }3 @        j=n;' {/ \% P5 J7 ]: d, E9 F" ~
}, ^$ c5 N4 _( h% ~* T1 ?( v% w4 F
1 T% F# a& L0 Z  |
void CA::print()
* d1 y1 C1 q* n0 \{
0 m$ K6 ~: _% o& M        cout<<i<<endl<<j<<endl;
! Z5 B. ]1 Q: e$ u% o. d: t}6 U3 g' i6 F# ?7 p& O! Z: ?

9 [( ~, d2 q+ f5 H  t9 B/ U- Q" Z5 `CA::~CA(): z7 E& c0 t/ H3 q* f
{; U3 E+ d$ ^. e' Q* J8 }
}
- _0 T4 y7 E9 I
9 y5 f2 Z  D: N3 s9 T2 ^: ^#include <iostream>, t* `1 O; @& K) a) C6 S5 O4 k) s' d
using namespace std;
) C1 f3 l! Q$ d$ Y* H$ y* a1 {#include "复制构造函数工作原理.h"# J7 {: j0 M. L4 S% `
int main(void){        
/ P- w/ Z& \1 DCA a(2,3);        
% N, b4 l# c1 h, k* ka.print();      
8 c- `% K- s) W( I2 ?$ } CA b(a);        9 H+ P5 p; ^2 }
b.print();7 v: q' H8 a# d
      
, G& m4 q; |, h! T return 0;
; {5 n9 D- ~6 A% a}
9 f* N' s  N) [& V0 ~6 B# F* Q/ g4 C
# d/ H. {0 V9 |# }' n
5 Z7 C+ I7 v0 G; U+ O# i
- ]" F+ P" g! X# V. ^# s- T9 }
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:7 x* y* \4 A/ C- J! k4 r# B
1> 初始赋值时:CA b = a;
1 l. p7 B, i1 c& t7 F3 C( y2> 按值传参时:void myfun(CA ca);
+ c( P+ ]. p0 F+ O3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 % z$ F5 K- y, b& g* |  R* n# P3 W4 |0 R
复制构造函数在以下几种情况下调用:
- s2 F) f# P. {% Y7 _1> 初始赋值时:CA b = a;
8 v+ j2 R0 K0 @( H2> 按值传参时:void myfun(CA ca);
; y: g9 t( F9 Q% g; C4 r
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-20 21:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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