鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 6 i) u& B( \- Q, I" n, q

" x+ R1 l  G2 d) O  Gclass CA/ h2 ~- V7 C( n" y# l! t' x1 B$ G7 v
{
1 r' M. W/ z, T1 d1 B) I: E% Epublic:
% n6 B% e2 |- R: u; p6 \  J        CA();7 R# I8 g4 ?  X( F/ Z
        CA(CA&);7 J0 ]1 i+ Q' s) ^- S0 ?- B
        CA(int ,int );
2 F  n0 k7 J+ c. c8 z6 Q        ~CA();
1 n% A/ _. E. U4 {: i        void print();
: E( J/ N' @; U9 M  K  R3 f- [0 |, u2 d
5 N4 n+ ~4 b$ ]+ M; y, I; Aprivate:0 g! M: p5 q) j- \
        int i;
2 U6 {; S# f+ Y# t1 L        int j;
( w% h" d! k  a1 h1 B7 n" u};  g4 F/ D5 O) k8 b# l6 i, L
& B4 A  H! D0 Q8 f
CA::CA()
2 Q( Z/ T1 M" o$ K0 D9 A{! {( t3 b/ r7 x
}
; ^  W. B/ W: d; f, u3 Q  {0 o0 b
# s% M% B8 @' _$ }- J' m% e& dCA::CA(CA&one)* g: r0 F) |) c. y. ~- F
{
) {! X  w  a6 C- u0 _: ^; O& \( C        cout<<"调用复制构造函数"<<endl;' {* K4 ~6 K3 c. N3 N
        this->i=one.i;0 L6 \2 g" B: @( H% }" n2 B) `
        this->j=one.j;$ g+ e( o& u. C& o9 F& y
}; j' j. N* w( ~: z3 u

) [- }) K2 ?* b: qCA::CA(int m,int n)
  F+ W+ r; P) d9 U! J' s7 @{# v! T& _1 u; v" H: [! t( j% X# c
        i=m;
  t" z! P* l1 q- h- F+ }        j=n;
/ }. f* ^6 ?, L! z}  Y" w- Z/ y$ a( T1 P

* A" [- U- `" S/ P+ Z) R1 Z8 `void CA::print()  S) j, w, C! ]* `
{) p$ U# _6 t3 N8 t
        cout<<i<<endl<<j<<endl;
3 U4 ~0 t% ?" j5 a' i}8 T8 U2 O) I! Y# S4 X
0 q( L9 {+ }1 a) H
CA::~CA(); I/ M+ g6 ~; n4 t7 Q# w3 a
{& e- ?3 N1 ?+ r- d) W
}
& X6 C  w- M6 P! o# ^8 S6 `+ Y1 P2 ~$ |& y4 E. z, H8 H4 s8 y# P( _
#include <iostream>, ^! ?& G# E1 C- z
using namespace std;. C9 ~, ?. ?& }1 N7 R8 {
#include "复制构造函数工作原理.h"( c- d0 Y2 v  [
int main(void){        
1 b5 x+ Q$ I, ^$ I5 @; S3 sCA a(2,3);        8 V/ P2 B6 j5 L8 i' ?% f
a.print();       2 j) p" m+ [( t# {, O; t
CA b(a);        5 K& U" T5 H/ Y# C4 C* B
b.print();% p5 G) z7 o' U8 k
       ! h1 L. Y" R7 l. j9 A- Q
return 0;
! Q( i# @& l- T}1 @' o" H- f- B  D$ }8 g) m/ M0 I

3 a! S! P# p# T5 r! r- D& ]0 K! i9 K1 J2 Y( ^' A% Z$ a  {0 ]! J- P
5 }& d7 W+ u6 v2 a6 v1 {

; L& z4 x9 I- t( e- I' H1 v
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:% I  W5 R. O' j
1> 初始赋值时:CA b = a;
1 H6 e, g: [2 k' E" K2> 按值传参时:void myfun(CA ca);
: s- V9 s5 s3 L; A2 s- G- w3> 函数返回时:CA myfun2();
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
. I9 ]1 y! j% A+ L5 G6 C' y复制构造函数在以下几种情况下调用:
# H1 r0 c- |2 B9 T% D9 v1> 初始赋值时:CA b = a;5 {0 F) l* O  Z4 y$ `2 a
2> 按值传参时:void myfun(CA ca);
1 S) C+ i1 \" ]* _! K4 N2 [3 a
第一个应叫初始化,不叫赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

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

GMT+8, 2024-11-26 01:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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