鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
, h- A# _0 E" \. Z3 ^, G
! Z. H$ j! t1 Oclass CA
8 m; b2 r2 n+ F{. D$ |# Y& B9 a* y2 J3 u
public:+ t, V6 x5 t, F/ B$ y
        CA();. y& l7 K* y6 I1 ?: p9 |
        CA(CA&);- M& D1 N) O. C; V; m3 o
        CA(int ,int );
* o2 Q+ |0 B) P: o( O8 U        ~CA();
0 _: A: D& P: E        void print();
3 L; s# _" H% c$ A
  _. {+ B8 v0 G! @, x, L2 Q7 iprivate:
6 x  i9 a5 s0 X& V7 p        int i;+ i& d8 R2 x9 j$ _* V3 \1 F( ?
        int j;
: U3 |( h$ |5 w1 E( u};3 k, _# b# p# g. T
. }( }5 V: t# w6 @4 H8 N$ Y' B! r
CA::CA()0 u6 y, A* {: ]$ j
{. I. z) D' f* ~3 @0 `
}
3 l' C$ Z4 i% o3 c( s" p4 f5 W" Y: S. j: o! ]' t- J
CA::CA(CA&one)5 r8 q; m" o4 m1 G& m
{3 [8 u2 k, l( m
        cout<<"调用复制构造函数"<<endl;
! T" M( f( n2 A7 Y1 i  _        this->i=one.i;
4 p( ~( k: _  ^6 d+ c5 L        this->j=one.j;
; E$ g/ Q, A# R}* @/ k7 W( L# ^# j$ S

- ?; F  k6 w8 h, y6 W5 ~# CCA::CA(int m,int n)
& o  H: k2 _' ?{
5 G; t# }' _3 N/ b5 i        i=m;
/ l9 U- I- {) y( R* |2 S; h        j=n;
2 _6 y0 G  ?# V% C6 ~) m}
2 u, X6 Y+ ]  O8 f) \# E( [, B
+ M. S1 ~( A, Z& L* b. Wvoid CA::print()
: S9 S. v4 Q; ]: t, K{, p8 {  N1 x% f9 U
        cout<<i<<endl<<j<<endl;) W& m4 l% B% B  Y
}4 v; C5 s4 B) I7 p3 v, Z2 l

. _1 z' F# _; _* M7 M+ ^CA::~CA()
. ~% X& W3 `3 J+ k9 R% R{- H2 U" d% O) l2 m
}& ~5 w1 {: |4 j( P% D  H5 p
, ]' u# |+ m: M0 t, W& \, P
#include <iostream>
) ?6 _4 E# _, r1 [using namespace std;
7 Z3 p* M8 L+ c4 `- Z/ a#include "复制构造函数工作原理.h"1 B7 B- S6 Z: g! k; ?: S
int main(void){        - j; S8 e! Z& v* L/ O- p/ G
CA a(2,3);        9 b4 ^+ i+ M9 [/ o6 p' g/ _
a.print();       6 M" n% o2 Q* Z
CA b(a);        
8 `0 s  D; a& {4 S, n# z/ [3 ~b.print();, Z+ |, o* K" f- m# J
      
/ o! R9 m9 _7 p return 0;
- Y" `# m  |3 p+ x6 r}
( c7 g: Q( q* A; d: d1 F! z  z8 M/ S  w8 m
# W& o8 O# }+ ^8 [/ t: R4 F; [

2 Y* M4 o+ e- @2 q( W# g: R; |; p  y8 i+ w# T5 m
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:# d5 W3 l. P6 B6 b6 l7 g+ o/ U) u
1> 初始赋值时:CA b = a;
( [3 F- v4 j- V3 X2> 按值传参时:void myfun(CA ca);
, c$ v( V9 q" Z3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
! [3 x' B; R7 N" z  G2 }: G
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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