鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
) N1 j) f) P8 _$ F4 u& T2 Z
6 P0 V, V8 l+ w+ Lclass CA. M: z4 P' R9 K9 w
{
) g0 \# D- ^) Cpublic:4 ^( G1 W% v4 F
        CA();
# D, }. a3 R5 ~# F8 {        CA(CA&);! k" v; c& ^9 ?" V+ @
        CA(int ,int );, b5 {/ [( e4 R) x% S3 |
        ~CA();
9 T) w. s) ~' _0 R3 I; y        void print();
9 J9 }7 Q* ]0 I, q* c& Q: d, `5 ?- r7 T  M3 H" ?) K7 w
private:" P( `" d( ~+ f! [4 K2 I5 a0 I
        int i;4 R% |" X: E# p0 W4 B& _; `
        int j;* |8 W& a( q2 {8 \+ w7 o
};
! U2 I) P! x7 Q0 _4 `+ h6 Y) \0 G# n' o7 I! C+ ~3 M
CA::CA()
, Y: x1 D! z' {5 {* N{
9 n2 a# ^3 w: I) Z9 n- `$ _" t}1 r: b: @3 b" C0 c
& L9 {: d  w+ [7 D
CA::CA(CA&one)
% f; p8 a1 b6 Y" d" l{$ a5 @8 M+ F( K: {/ B0 S
        cout<<"调用复制构造函数"<<endl;5 w; A) Y: O, Y$ u, h( d
        this->i=one.i;
5 ~+ p5 [8 |- s. x/ a% H# f        this->j=one.j;
2 ]8 U2 }% h* s: }& z% h- x}
. n) ]1 ^9 I5 b
. m  e! v% U8 ^4 _. h5 N' t( kCA::CA(int m,int n)% ]9 _! Y7 d5 u
{
: i. R- i0 g( `: p- r        i=m;7 S, j5 v  u% t; `) x5 `1 E
        j=n;( z8 s2 I5 |# \2 a% C( G
}
9 ]  p, u( d+ k$ b; k4 r" Y8 n7 O: G8 a% o1 f+ X* t
void CA::print()
8 T4 V! ^3 o+ \9 e{! h  C- S) p: f. M9 r: L4 f
        cout<<i<<endl<<j<<endl;
) z$ J% h  q1 e- l0 C}
* m$ a& {" |1 f) O" T% {( c  C6 l# T  \8 U9 M; O8 k2 e! Z# T( Y! A
CA::~CA(), B/ g# ~% x8 y- E: p2 i
{
* X* X! |. _8 \. T- c6 k, L+ g; k}4 _0 E6 z$ G: Y$ z6 |

- |, K. X* M  v$ X3 r9 K% p#include <iostream>
5 k0 J7 B: i. s/ L! d% {! q3 zusing namespace std;
3 g4 }+ X3 Z5 M#include "复制构造函数工作原理.h"( ~' t, j1 l. E+ D# Z8 A
int main(void){        5 I5 ?; \3 Q3 b' m- o$ |% ]# J1 x
CA a(2,3);        
9 `% m) @- b# f1 v) C" x1 Ya.print();      
& M) T$ Z9 C- c: r/ S1 J CA b(a);        
1 b9 Q$ k+ s, Ob.print();# x$ ^. `& U- |& X& k& a7 A
      
/ ]( \' Y* C: C1 w5 ` return 0;
  K/ l: [, n! X+ D( C3 Z9 A}
! R2 I: ^5 X6 g: ~1 w" i" e8 C, R$ a6 @8 W! Z+ T

. m0 L$ A! @9 L' D( C' T1 _- @/ u1 B/ F, F: C
; x6 b6 ~5 R" N% @, G% F% J$ I7 P
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
% n5 M! g! c3 }, t& _( S1> 初始赋值时:CA b = a;& W6 T2 r$ b+ F# w3 B
2> 按值传参时:void myfun(CA ca);& g+ N: Y  n8 D4 p6 [
3> 函数返回时:CA myfun2();
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
  V9 a- i1 e; L& g复制构造函数在以下几种情况下调用:4 U  J+ e/ E. a% k+ |) Z
1> 初始赋值时:CA b = a;
1 H+ [. U0 s& v# v1 c( e- @) p) @2> 按值传参时:void myfun(CA ca);

& e  @. A) a3 Z第一个应叫初始化,不叫赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

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

GMT+8, 2024-4-28 16:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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