鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 . q7 f6 T1 u3 @: w5 J: |7 [+ K4 o3 f
3 r5 v0 N3 ]& ~5 V
class CA
# v0 q5 C1 {; \5 a/ b9 B{- A& n: ], V3 [, ~5 N
public:
3 U6 Q" |; G/ D/ V        CA();2 f5 J, L% p/ X6 L0 h7 p
        CA(CA&);+ C% h$ v8 O0 H- @/ c5 C* o
        CA(int ,int );! X  b% A# w; P2 L
        ~CA();2 g- r7 C, I. Y+ Z& F  t
        void print();
6 h( ^. T3 K6 [0 H+ o& _( q2 R& B
$ R' r( R7 E' b$ Y: x  Bprivate:
6 h0 o: y3 y! O! W1 ?5 u0 V, u0 r        int i;
7 g0 J' m4 }" q        int j;
9 W+ S- G2 t" L$ L* m/ O1 t};& ^  X1 h  N" N* z8 Q3 R

& w/ a7 w( h7 _CA::CA()
. L! w0 t, }1 d% E9 g{) j; s* r+ Y2 }* [7 P
}
6 n* k7 L+ A* x+ F: K+ p$ q6 y% M( p2 O' `4 O. \6 h. F: m
CA::CA(CA&one)8 m7 M! ?0 V! u* R- V& N0 Y8 [9 c
{1 C2 [2 k! J8 W2 R7 l
        cout<<"调用复制构造函数"<<endl;
8 t8 Q; F; v2 W5 s        this->i=one.i;/ B0 i7 ]. J& F6 t& L2 D
        this->j=one.j;0 z4 ]! x5 m- z# x0 `
}& b0 J- w# a' |
# Y0 T$ x( H3 E; U
CA::CA(int m,int n)
1 _: ~( ^# l$ R6 U! _( u, z6 D2 {" ~{
0 w. O; y7 A3 V, n        i=m;
: |& c* Y& O4 A6 s' [. C) e        j=n;4 D+ M  @1 ^6 {5 g2 ]7 u! n
}# R6 w( q+ @' A% L1 z5 ]8 k

4 ?" r9 U4 ~8 w+ ~" t' T, nvoid CA::print()2 G1 v6 ]! _; r8 s( `" u3 ]
{, ~% Y0 P+ e  K& v( ]( w- P& l4 Z# B+ j6 T
        cout<<i<<endl<<j<<endl;0 P( v8 ^. f" w4 m
}
; C: u" H" E% U  B
5 @. B9 m5 \; E7 ?2 RCA::~CA(): C. W6 c2 P7 f
{
& P+ T( x) C7 O3 `# B$ W}1 G1 o) }; E' {- j. P2 S
: s/ O7 [1 `( \( ^0 c4 v8 L; Z
#include <iostream>
6 z, |2 @8 H) ]% I  K) R$ m9 v4 Iusing namespace std;
' K. K% f0 G& Z( L% B#include "复制构造函数工作原理.h") B1 W$ m0 r3 {+ [
int main(void){        
1 {) ~" `9 V' gCA a(2,3);        
; ~: L' b) @7 @. `a.print();      
% e6 N( G9 I# m+ J. k7 h CA b(a);        
6 h0 x8 _( {* X7 Yb.print();; Z( Q. N8 o+ D) ^$ F3 _  A/ T5 l
      
6 ]; x. H0 J$ x; k) A" l( v return 0;3 P: b5 r" n! O5 O
}
; u/ A& B! N" f  O
+ n3 T5 D" a5 y6 T
. ?( W9 P0 E/ |- K2 h4 i  j2 w* i& F1 \$ b3 r! |5 x5 s
5 N3 f4 G5 _% q: @
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
  O; P# i" w& z5 R. T0 G1> 初始赋值时:CA b = a;
6 p/ j* P& C) `2> 按值传参时:void myfun(CA ca);5 U3 V7 O& s  ]$ @8 M4 c& R
3> 函数返回时:CA myfun2();
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层

# P8 U0 t2 t" D5 L  r第一个应叫初始化,不叫赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

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

GMT+8, 2024-4-28 08:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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