鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ; P" N- Y) S7 f% v9 C
, r( W6 y4 i7 U$ X$ U6 G+ ?
class CA  y6 u3 b5 U  Q
{
/ I7 b8 ~. B( W, Wpublic:
% I: ]* Z! J2 P4 w        CA();0 x0 Q& _8 @) g$ g' H$ B4 m' @8 P
        CA(CA&);8 w* T1 t, T5 v, h$ T: I
        CA(int ,int );0 L5 ^/ i, B" ]( m0 A; L. }
        ~CA();- V" I0 v3 v0 f8 x
        void print();
5 E2 [: |/ @8 U9 ?8 K: r# b6 i
( j4 z% t" O# M; D9 f8 R  wprivate:
. M+ F2 E- Q$ Q8 s4 s6 y5 E" k" {: I        int i;
9 m& J% |! X* l9 D, a        int j;3 j3 Q% _- F. |1 Q
};8 y. G' v3 B& S/ I# a& `
! w5 V3 k  [( I2 N
CA::CA()
: |+ O$ ~& n* x, U- F3 Q{7 w) B' U' G- t  J" _# E: R+ |+ z: G
}6 _2 x& G8 J+ l) L  Z6 @0 k

7 d" K3 y/ {, hCA::CA(CA&one); z2 E% k+ _; r+ T1 `
{
- a5 x, K3 ]$ a        cout<<"调用复制构造函数"<<endl;7 y0 x. ~% {" o" K; M
        this->i=one.i;% [' D3 V5 X% p" G) }* f
        this->j=one.j;& [- j+ ]) L1 x& P( |. s. Y6 d
}
" T# k6 a: a( L7 u, S
/ q7 _9 g0 K) d1 ], vCA::CA(int m,int n)
. Q" q% \) y( m( M2 S. O  w{
! d5 k: D- g# g0 `        i=m;* W+ B; ]% l( H, l) e  Z' G8 Y4 s
        j=n;' D' r, {7 g0 p2 d$ w3 V& G
}
1 a" v; F5 l- k+ H3 M
3 K# `  K  }- L" P/ e6 O3 `void CA::print()7 }$ h7 s0 g& e
{% E, ~+ a/ s6 L! D5 v
        cout<<i<<endl<<j<<endl;
# }; X( F& H7 `" t8 o}& H5 P  e( |1 _& M

$ v% y+ ?/ G- q- D% C7 gCA::~CA()
) R/ J9 }4 e- O7 N' U{& F8 Y. q# C6 _2 o" C8 k
}
! T9 o% {: i; q# r% g9 n# O7 W0 Z# `  H. E5 Z" R% m7 s0 ?
#include <iostream>
& g9 S, n  B8 C! P: K4 X3 |$ u1 Q0 Eusing namespace std;  V8 b1 s! J: m# Y
#include "复制构造函数工作原理.h"# n* a# E" T- R. o: p' z7 m) A
int main(void){        
- l, Z  Y8 [9 P/ SCA a(2,3);        
  j+ s$ x- A4 j! `/ |9 E/ Q. wa.print();       ' I5 {; C7 i! H3 N3 R+ L
CA b(a);        + ]: U$ ], @7 u/ [2 {" L: f
b.print();
- M2 E' D% E+ O0 o0 |      
' T  a* D! q: J6 n return 0;, \6 o4 F; l. @) s
}
: S; w4 D1 |- T. K5 c1 B6 ~; M- o7 M8 F( E' W" y

& L( y$ s' d0 ^. }2 z3 ]2 e) N/ \0 u- N* T

# x( E4 l- C: `
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
1 Y( f7 Z) p- u! d0 m1 \1> 初始赋值时:CA b = a;
4 T: x* J! W+ W+ s: X5 L( K" e2> 按值传参时:void myfun(CA ca);9 w) p- U8 P$ x$ A5 V' Z
3> 函数返回时:CA myfun2();
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
4 Z. y; n! Y$ v0 a6 L复制构造函数在以下几种情况下调用:
3 J2 j- b3 `2 H( n+ [1> 初始赋值时:CA b = a;
8 [, d8 _9 x" B- f% F$ o2> 按值传参时:void myfun(CA ca);

8 z, f  q5 k) `9 p  o- R3 Y9 l第一个应叫初始化,不叫赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

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

GMT+8, 2025-2-19 06:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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