鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
. p' H# T6 s% _5 F! z6 ^8 o7 k2 R- u+ ~  U+ Q( S2 \) n
class CA
5 g1 l( A2 a1 U! k  D& f{
2 ]1 y: b# V# ipublic:! Q3 V' g, D% a7 K
        CA();
; P; k' v0 h* W4 V6 R2 o        CA(CA&);: r3 j5 l! b& ?) ?' V2 h) p9 e
        CA(int ,int );
8 q! T5 ?8 v% ?9 J" o: X0 M. @        ~CA();3 G# T3 F' @4 k3 M( B
        void print();
( x0 V5 f+ i" q  U3 R6 L
4 U: e8 E0 y* j0 A8 Z9 f2 xprivate:6 W2 [) @- p; ]+ ]
        int i;; m* B* \" o0 }6 k4 G( C1 p* w
        int j;& n' H  i) _  i! l- T
};
0 s9 t! }5 R& w& h* ~% I6 V* i  _, ^& O5 r, o
CA::CA()5 T) K% I' q' X, a1 ?* S) M
{
- A& H' Q8 d2 [/ s' [6 n. ~}
6 n. l# Z0 I3 U. J
) I) q* Y' k6 x+ ?6 i+ n# uCA::CA(CA&one)3 C: V5 u8 m. W6 v
{
/ A, D5 O. M+ B3 r0 u* ?2 m        cout<<"调用复制构造函数"<<endl;
. p  a3 I7 O9 d$ z! \% e        this->i=one.i;; Z  C  t& R+ T+ [
        this->j=one.j;
6 o0 y! a/ B% r8 t$ }2 {0 u$ [}& F. e% Y2 k. C) z; [7 l+ u( E# I
; P( }# ?$ z0 m' o# O, {5 z3 B
CA::CA(int m,int n)
) D9 \5 y& u0 A) W  j; P# N{  Q6 [' Y$ H! q2 s3 e' h
        i=m;2 U0 U$ P2 _* [. ^$ u
        j=n;
) E& B7 Q& k$ _7 J$ q$ M}
) h. d- N  b/ k/ ^3 ?# F! e# S' r/ q, s2 _  L. c' _* E
void CA::print()
# p. [, ~3 `: i( ~& S$ I. v& ]; P{1 W1 G3 E8 U- j+ p, `/ g4 Y
        cout<<i<<endl<<j<<endl;- P2 m: p( `' A9 ]" Y
}( _  [# f! k7 K. j/ U3 |

9 U% O: U) {+ Q( a7 u( E1 w: kCA::~CA()
: b. Y0 m, s, b0 {: w{
, T# F- ^/ r1 X7 n! [4 t: V}1 L& [# U% M4 C0 u# z
1 |" j0 ]& X" Q' R0 n0 {! N1 T% y+ l
#include <iostream>' V. B8 @, ~2 i6 s0 o% h- s0 ^
using namespace std;$ M% R4 Q9 _% t' A+ f: a9 x
#include "复制构造函数工作原理.h"3 d: M* y, a$ J8 @. X
int main(void){        ( }# _$ P6 v/ Y) a
CA a(2,3);        0 I* F0 a0 z7 }  g
a.print();      
7 ^9 o$ n. ?7 l6 Z0 C, p$ k CA b(a);        
7 z# y. x0 u+ e, d9 T0 Ob.print();
% {0 u9 t& {' |5 G! t) ?* g       " x: f3 E! X8 |% I
return 0;4 ]) {% e) y7 T6 Y% C4 X
}
: ?7 t7 C1 C' P) z9 r/ \* a; E: w- ]

$ G( [, A5 Q: `
  H7 |' p) p" B# Y/ h" E. h+ l& G* j9 W4 U1 c+ l6 ~& V5 a
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:) p2 ]$ X4 a  q1 |1 @  x8 {
1> 初始赋值时:CA b = a;- b. Z8 ~* }2 V) t, n( E) A5 I& b% C
2> 按值传参时:void myfun(CA ca);+ C7 W- O( K& ~* [
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
  o. q" o! `" `: s1 {/ F复制构造函数在以下几种情况下调用:
% }9 b- ^+ q2 ^, q0 W/ v$ G- \1> 初始赋值时:CA b = a;/ N$ y; u4 m+ a/ }
2> 按值传参时:void myfun(CA ca);
' q8 `6 q# Z* _$ a  ^, d! S
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-8-20 18:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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