鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
. L$ o: y+ i% p4 Y  f. E3 q6 q  z- l( f! V; x
class CA. Q. ]+ a5 E4 ^! L- L
{
# u) A$ D: g- m& r6 A. \8 npublic:
$ g$ e; _3 E5 U: @+ s5 k4 @' `        CA();" G( s9 s  U* q4 [& a/ u
        CA(CA&);
! V. V! L& h8 t6 l        CA(int ,int );. o% V' d+ h% a8 J; X+ w
        ~CA();3 S4 z) _! C2 ?
        void print();6 P; g& f5 P8 e: F
: j8 `$ ]) a5 _- g4 _
private:
2 w3 X& b" N# `  h  `- E. g2 K        int i;6 a1 ]3 g2 R* q% g( S0 x
        int j;! o# h' H# P% ^' a* W2 N8 e
};4 M1 k' J& A( V( c7 A' r
% {  Z8 K4 o( ?' x: T! Z
CA::CA()+ L% q# X) f' c7 r: C
{1 j' R2 e/ n3 L
}
8 U- W7 H$ `$ D8 ?1 M' v" B8 q5 w# c& Z8 t7 E' P! s2 N, F
CA::CA(CA&one)2 r. j. G/ w: ]& M/ p5 U) `6 p0 {+ \
{
  H  k' [0 U4 v) o) `        cout<<"调用复制构造函数"<<endl;
+ z# ]0 n, h# W8 P) V8 `( U        this->i=one.i;* A  {7 o# y$ ]5 D+ M" f; A
        this->j=one.j;% ~! y7 P5 u+ a! p+ {/ x
}
  d7 Z; o0 {, D9 o* ], e( j
  V9 X" L3 i- \- iCA::CA(int m,int n)
! }! L5 M! I) W7 i2 B' W{
' ~1 Q0 x( n* ?        i=m;
; S1 ?/ d4 N, L# w! x        j=n;
) E: e* c) N- _/ v3 L5 X$ p}( \( c* p" y0 H$ L4 X4 r8 z

% C( [% M* w6 m  h: ^# y" Y( bvoid CA::print()/ A: L0 o0 Q& A4 ~
{
  K! q* a+ E3 E# V+ Z; N        cout<<i<<endl<<j<<endl;) ?* R+ g# Q! }9 f; g
}; \, N5 M% y( x' J, T+ K

; }: ^" T% B2 P, }: @. eCA::~CA()7 b: U7 N# E2 V2 W7 U
{* |# J. t" W% J- D/ U
}; Z6 m/ @5 ?1 C  ^  H/ |+ ]+ Z5 C

0 i7 @. x! J% q* I. ~7 _+ O#include <iostream>( a- X2 y) g. {* H! n* M0 s6 E
using namespace std;" X$ Q3 w! G( P8 p; w, Y, @
#include "复制构造函数工作原理.h"
8 t; K7 _# N1 t  I( k* lint main(void){        
+ Y. s1 w( C. @CA a(2,3);        
6 j8 X$ m) R  C4 O) i& x1 Ua.print();      
# q- v! |7 p6 p5 |! ^% X" I CA b(a);        8 D; v% ^" v7 K: D, K( l
b.print();7 u3 v5 \+ {+ l+ E8 r5 s
       $ {3 I; C8 {8 y- g8 q
return 0;) h* E# X8 J( \, k* O3 c
}
9 v1 b- f3 Y4 m* i" v5 G' _4 f/ Q) u6 G; T% C# Q' L

% C- ]  H0 G- |- b) i, X' l  V! t, H) S2 K

. z! x) o7 K: N* W+ c
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
  ?, O( G% Q1 i2 S1> 初始赋值时:CA b = a;9 f7 b- Y5 W/ P# A/ {' Z7 _
2> 按值传参时:void myfun(CA ca);
6 q* I6 R5 C( I6 f, ~0 @1 g3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
% p9 [. n2 w# H8 R( w2 i3 ]+ l复制构造函数在以下几种情况下调用:
( p5 r- s1 d# H5 D( Y8 B1> 初始赋值时:CA b = a;! U. ]' j0 U9 |9 ^$ r8 y+ `
2> 按值传参时:void myfun(CA ca);
+ k" H3 a" M: Q: J$ `
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-11-29 02:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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