鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
9 J0 Y3 @( G; o% f' V$ Z# |0 ^
( k0 f1 t" s; G: ?class CA3 E) `& p8 p/ Q/ N
{" _3 ~8 ?4 m/ `$ p7 D. _" v; y
public:, c/ G" u9 |$ S) D$ ~
        CA();: @& @! p5 f3 \/ A/ E% F! G8 [
        CA(CA&);
$ o6 r0 `/ ?8 m' ~5 Y        CA(int ,int );( r! m7 g# O8 d% q: ]& h
        ~CA();
. v7 x1 D; T& [) t- {6 B9 s( d        void print();
( t& ?! f7 x1 y7 D4 D
1 O* q, O: X  F+ i( }private:8 e& b! ^- V4 P" s
        int i;8 k9 v) |8 ~8 ?7 u( O8 \" [3 D
        int j;
3 ~! W* E1 g+ h; z3 h};3 M0 X& A3 J& Z4 k
. k" u7 F5 D) Q
CA::CA()
% f: J8 j( s2 d+ x! t" K{6 ]' g- h1 l+ Z1 B/ Y' Y8 X% T
}
0 a7 h4 v, J5 p6 f8 |7 v4 g' B4 D4 G2 e
CA::CA(CA&one)
) D7 E" N- a0 |. Y  T{9 [2 k# l1 z1 q1 E" |5 t' c
        cout<<"调用复制构造函数"<<endl;( C5 g0 D3 t1 G. P+ `
        this->i=one.i;
7 p- w2 N+ p) t8 l& p  q" \, w, m        this->j=one.j;
7 a6 b: I+ L9 l) a}9 [( f9 y" K& f' c) |
7 V( T$ W% s9 O. r4 n7 G
CA::CA(int m,int n)
; j- @8 g4 x6 u1 K{/ e- N* p6 R4 s+ \1 T$ k, P
        i=m;
( z) y% }9 \6 t        j=n;
( m7 q5 L. X& j: \  c/ Q9 u}
; \* F, ~% c3 ?1 E. k1 k0 r( O+ S% F1 C$ a0 q* o. A
void CA::print()5 k8 @* z- E6 z; ?
{
( P: c  G: X6 e& N; A& Y        cout<<i<<endl<<j<<endl;
8 `: G5 L9 X/ }6 _/ _, q}% k& X/ c4 q. z# D  I
9 w! x3 ~8 [- d# h" W7 M# E& L5 j' J
CA::~CA()3 {: e- Q) r" `1 f6 w
{
) F& \! r# l: J  s6 u}3 u3 r' ]3 t: S2 f# M! f* d

2 M6 Z0 ~1 _  f2 B- X' d9 s#include <iostream>
1 e/ c, q7 X1 E6 Y: r1 L( d. jusing namespace std;
; y- E! O. k9 j#include "复制构造函数工作原理.h"
& S( f! h2 @! u7 ]. x: eint main(void){        
! E& k. Z) C0 c% B2 ACA a(2,3);        * ~( \: z: d1 R) z3 s9 i2 B
a.print();       9 G5 f2 p' h& m3 S3 ~  j# d8 g
CA b(a);        
: I. L2 r+ Y9 p0 y/ f: ?) \b.print();
* v, H5 `6 c: P' G      
+ C% T2 o! C- _ return 0;6 n( r& `6 |. F) \
}3 z* v4 n; ?' W' T

+ m0 V) h: U* ~( Z5 o
5 G+ Y3 F$ ~1 r% w
! O* G: _% {7 @; B4 v+ G) G$ q
0 y  r. X. ~- e4 y" T$ b$ @" r
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:" G9 U: E1 _% _. ?
1> 初始赋值时:CA b = a;
5 |( N0 G* Q9 b% A- j5 `, F2> 按值传参时:void myfun(CA ca);* u9 M+ L) _8 Y
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
% I2 B9 Z' v9 _) h: _0 s, k% J复制构造函数在以下几种情况下调用:+ U3 @. T* N9 V" A( u6 L  r* C
1> 初始赋值时:CA b = a;
' Q( v5 [' j5 b' x% X9 B' e2> 按值传参时:void myfun(CA ca);

0 n4 \. i( l7 Z% H2 s0 T' i第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-9 23:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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