鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
1 @6 _5 t; R7 b. r. v2 z/ F$ b; O# d6 C$ Z/ `6 S+ v$ T6 v7 r1 q
class CA) k  O, }( ?7 N% i3 d# g
{* z( l5 q& }$ x# [+ ^
public:$ n* I/ \( s9 {8 y
        CA();& ]8 E0 O- g' k& q2 e, X0 h
        CA(CA&);
" ~; l$ E/ O; O# X% _        CA(int ,int );
# d8 d% y7 V. T" X% l0 Z        ~CA();' n9 B/ g3 V- c" C
        void print();
8 n5 P+ T* m4 c! ~1 D/ \' O4 c; Z4 I3 P" v
private:; w. r/ s$ ~- e0 Y: T6 _
        int i;
, }1 a$ O& b# x2 ]9 B+ F7 G        int j;
! O$ K$ E- z! Q* f, `2 Y8 k/ v' e};$ q$ y  w8 @7 R  Y. w
6 R7 Q  `3 C* j! D& i
CA::CA()
: j6 R& F9 ~4 @* x- W/ B! l- G{
/ C+ p; a6 w7 \- ~}
; ^: \1 i0 Q1 _: C9 D: \: h, L+ M0 U$ ~; L
CA::CA(CA&one)
# Y/ S+ r( b: p{
% z6 K+ W6 ~4 x% p7 v2 G+ R; o        cout<<"调用复制构造函数"<<endl;" ?5 F  [/ u7 {# l! {
        this->i=one.i;
* i1 W' h! p# h3 `8 h: T$ P        this->j=one.j;
( `+ f1 p4 D1 Z8 m4 f}! b( A: p- D+ i3 p3 c& t5 V
4 h, ]0 ]$ a& ]
CA::CA(int m,int n)3 \# \: F) \$ v2 q1 L' _
{
: r* C. k3 `$ H        i=m;% L) M5 k! Q8 ~7 r' Y
        j=n;
+ ?, \+ P$ ?  ^4 e4 |% O! \}6 O1 J, L7 {% Y" W5 z2 V2 h. Y+ X# v* p

' @7 X9 Z4 y0 @/ [4 X1 Svoid CA::print()
% X3 }; V) n. ^: I{
- @' L1 u9 A. w8 [        cout<<i<<endl<<j<<endl;
" R/ f$ l+ }3 M1 Z( o, M4 ]}, L* i$ U, j4 y+ j
; E% Z) X7 A$ J& r. u% m3 x3 D
CA::~CA()
( V1 a( l5 a+ r4 t{4 |/ Z  X6 s8 P# V! N' `  O4 s5 {/ ]
}5 t7 K1 v. E' s$ a. `& S1 S
% O& [4 K$ Z1 Q8 R2 C
#include <iostream># F5 k. k, [( W9 a1 t  o- k& `
using namespace std;
/ M+ L3 I7 G- F1 N#include "复制构造函数工作原理.h"/ f( Q% H$ _. o" m* |, ^
int main(void){        
0 ^: j' Z. A% d' X( Z0 ~# uCA a(2,3);        # T/ S6 |; n5 k  O) b* k
a.print();      
& F( o; s1 ^8 f CA b(a);        
5 e& c% z' R" N0 jb.print();' p2 v: b$ _. E4 ]: q" S" `4 V
       ; E& d; g6 U$ t2 ?9 j/ G1 |4 D
return 0;; _9 G8 V' I9 b4 E% t
}
& T4 Y. A1 l* x
, l$ p, K4 U. ?: a! ~, j% x, \( t7 Z( o5 |  \# Z9 o

& n: S4 C4 w2 G, w* R8 v+ u1 N! X: H  X! |/ d6 l
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:1 Y/ _/ f8 V3 A' [6 s
1> 初始赋值时:CA b = a;
# a4 i# e; G2 U* m: `4 |% L2> 按值传参时:void myfun(CA ca);* B. G4 i  o4 T) o; O
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 # b  C- T" m. Z! ]  S, I
复制构造函数在以下几种情况下调用:
3 e# x9 R& X) k% p, [1> 初始赋值时:CA b = a;/ m' H0 H) G3 B! M0 L* n( g& L
2> 按值传参时:void myfun(CA ca);
1 t  H9 `; ]; U2 m% K& J8 R) _% ^
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-8 03:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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