鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 " ^4 J1 y1 U; a% T, h8 l3 c5 U' A' l

/ s1 Q6 q+ A& V& k$ ^+ Zclass CA' A5 T& Y, ~2 \# `1 P3 N& c6 i
{) \' [. U1 S& C+ m
public:" f- B3 A0 B) o- k! w- z; N; ~
        CA();- e5 R8 C7 b- x
        CA(CA&);8 ~: C, P8 U3 S; |4 H
        CA(int ,int );
! n8 C9 V5 D# K. w* _9 O- {1 D        ~CA();  w. G' U' W& C$ J: ?) O
        void print();  v' K. k# v# r  U4 W
( j; N/ M# ~. a. K
private:
; {+ O7 \: k6 N- {3 B' m& z1 l; e        int i;8 j/ H& b/ E- C& A$ n0 k  P" W
        int j;
4 Y& P. U: G1 z  P$ F" c};; h4 @5 s: B" n- z9 L" a' a

& C. ^2 n9 Y: A6 U8 l* ^! ?CA::CA()) t- Q. [! I0 u8 N: H8 T. ~
{
" D5 v# o5 K8 F8 p- }7 `% \0 ]}
/ U* c2 V; G  \9 e% x
1 E* M; j/ W6 L: V8 Z# K4 N' H# OCA::CA(CA&one)- n" F4 u( U( V# j. q5 ~4 V
{2 v# m1 u) x2 c
        cout<<"调用复制构造函数"<<endl;
* A7 j. C- b" s' ~        this->i=one.i;( N/ y. P/ t) z$ c# m' v
        this->j=one.j;" [1 d9 |: I- ?3 }, X
}0 M+ D4 y: R# K* `
* z# O; A3 u$ J+ D0 r% n2 L% c
CA::CA(int m,int n)
2 b; n4 \; T" W% W{
5 L9 E; Y. b; f' z3 b$ |, g        i=m;
/ N3 r- x$ T% G3 U. v8 c        j=n;0 g# Y4 a. v0 P5 h# q+ H
}
/ h  \  U* S5 `0 T1 o; Y* k: U! Q" f
- Q/ w  p+ n, zvoid CA::print()2 Z, X3 N. \" K$ L" e5 s$ Y, X
{0 J+ Y3 Z: n3 p0 ]8 G1 u! L7 m8 z
        cout<<i<<endl<<j<<endl;. }4 I* B3 v% _4 C! k3 k( p
}
. T/ H, H' e. T4 d7 k* `1 ~1 Y0 {
. G) {. e. x, a7 M8 v$ }' aCA::~CA(): Y( L- K9 M: g8 h* G" n- C; e" v- J
{& G. Y1 s9 d1 U" t! k' D& X
}, ?  Q! X0 G  ?2 z; o% ^# R$ i( j0 P

0 o! w/ n# q% W7 {3 b. P* Y#include <iostream>
& i8 H  ~, j# S1 W  t3 y; R: zusing namespace std;8 I1 M& Z4 O4 g$ h" M
#include "复制构造函数工作原理.h"
1 W. c, V: u" p$ F" a+ _int main(void){        
, O  P* p& o& e1 ?: W/ K( c* g3 K& @9 TCA a(2,3);        
+ x  p& Y# Z/ z; @( w& [8 }3 va.print();       9 _5 E$ F# y+ j' `
CA b(a);        ) E+ X: {9 H8 b: ]2 |
b.print();+ s: L% }. E5 E% ^
       & E! Z0 V/ t) o9 p
return 0;
/ {5 N! ?+ Q& f  @4 m" r" S* C}$ [! V$ l+ t4 }4 [! K
( l# ~- O- [) V& i

4 A# V$ Q$ R) q' |% q0 w4 a
, q3 i7 k9 K1 |. v. }* ?7 I1 a/ K; e& q( ]$ ~$ x2 t: k
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
" E! H8 o0 \. i# R, n  u% s1> 初始赋值时:CA b = a;
3 Q) s: Z- c1 w! W$ _% L& q2 M5 `2> 按值传参时:void myfun(CA ca);
( |# h" h: r7 a; `9 X7 K3> 函数返回时:CA myfun2();
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
' Z4 A2 [( m8 z' o6 f复制构造函数在以下几种情况下调用:+ ?3 K: w! j8 [+ A
1> 初始赋值时:CA b = a;+ e0 |. W/ @, u* t5 {7 Z1 B  _
2> 按值传参时:void myfun(CA ca);

7 u) r2 O% I0 p  q) R第一个应叫初始化,不叫赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

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

GMT+8, 2024-4-27 08:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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