鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
; Y5 |# k& [4 o" g- }# q7 \) ^+ _0 ~$ G, N7 e7 @
class CA+ w' t3 u/ O( ?5 O: w
{0 I9 {. p  m# `- }
public:: d/ `- o+ K+ q: \( Z% B+ E$ F
        CA();2 g6 H/ F9 m! n4 y
        CA(CA&);
# X& z: u1 n) z* m9 l2 V        CA(int ,int );- X  l7 ^% o' I; j/ g+ A2 Y
        ~CA();
% m- Z/ ^) N; c4 Q        void print();
! k$ o, }, R5 F- d
: O3 N6 z! Q+ Q6 i1 Z) e, xprivate:
% B" @2 x, G! Z% _% x        int i;. G' g" [; l2 e2 }" D
        int j;
" s; o, Z( Z5 B# w  V/ r! G};
, |5 Z0 h! H2 V8 X) {. a: y+ t' b+ `6 L% ~+ A( }
CA::CA()8 O4 I) h7 ?/ j4 S. G3 S  _4 o
{
2 a  \8 n+ K% c7 g5 x. F  f' P( q/ @2 v}
9 `1 c5 R- \# K9 Q9 S) u% b* X& T1 N( q' c7 L; J. B' ~7 k
CA::CA(CA&one)7 G) q0 j& U0 W- H- ^9 D0 r: A" D
{- S7 b  i6 I: Q0 [- y' b
        cout<<"调用复制构造函数"<<endl;+ h8 I+ v2 }$ O. h
        this->i=one.i;
1 x- U  z/ N3 E" b$ @        this->j=one.j;
! W! ?8 Q1 _! H/ M; r5 z9 i/ o}% E" ?8 h) i: r! I* a, _" F# l
8 z, r7 F* \1 o! L& V; w% ~
CA::CA(int m,int n)" p9 ?. G( o$ }# }7 \
{2 |8 _7 J& X; B9 K" C9 e5 E) [
        i=m;5 F$ N' D9 G% i/ \$ V
        j=n;. Q# T* y- i0 H9 i% m7 X' ?8 @
}
7 ]7 f' M" O# C) \$ a
' W( B& I* O  I8 x$ @% Cvoid CA::print()
6 T' |6 j7 a1 y( B; v0 e{8 K* k7 V/ c" G$ N7 _( Y
        cout<<i<<endl<<j<<endl;
. G* P/ W0 e0 ~8 S$ h}8 Z4 ]) T8 f) H" [* n7 T
( r3 s, A8 v7 S9 V' A
CA::~CA()
$ L' \9 f) u$ D{, h) J9 w! l4 G* u; S
}- [8 ^7 l; X5 T1 w" U$ ~5 e
9 S1 }) \: L& Y* m' w3 |' l' q
#include <iostream>9 b; m( W4 `  |7 {
using namespace std;# o  B) S# V* _: a; `8 Y4 N2 q
#include "复制构造函数工作原理.h"
) D! ~  m( P% |int main(void){        
  F) k/ u5 d% ]% M  h$ pCA a(2,3);        * x/ H5 h) _, t2 K7 t
a.print();       * _( X% C8 x9 O+ i6 J
CA b(a);        
# P2 p+ I+ I5 M  B& a0 bb.print();: Z- d9 ]8 L1 z/ W) O- O
      
8 f! ?/ d# z) @1 d# v" m return 0;* a: G1 S; E  D6 ^
}/ P6 m8 |/ ^1 J: @  }/ j* p
* A5 a7 I$ `/ D* A

& a- A9 s( W/ P) i; E) @3 ~0 a+ S1 N+ k; u4 I3 D% y
* T$ |! i3 x$ t4 v6 \9 f
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
) C/ p+ p7 q- V5 ?8 r1> 初始赋值时:CA b = a;
- m/ I7 Y( C# i8 z9 T$ l+ b: S2> 按值传参时:void myfun(CA ca);
2 H# P) e& G+ ^: B; ~3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
) G- @! F7 z5 \0 m; s复制构造函数在以下几种情况下调用:
$ `1 I" X$ |5 L" V( V! D8 B1> 初始赋值时:CA b = a;) p" {, o' o1 T8 u& }' ]- `
2> 按值传参时:void myfun(CA ca);

' d( o) g7 f- y" j" e第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-19 06:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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