鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
5 E" z7 h# M. I3 ]2 R+ X5 O6 \  z+ D$ n& G4 f% b8 L- `0 M9 E  I0 K
class CA$ Z4 v% M% r5 N* e+ l
{
* s* H0 s- E3 ^5 I& [public:
! Y1 J% c" I% i4 a$ f: H2 R        CA();% [- c& D2 b4 r" }& d
        CA(CA&);; l) j, m: w! e- I. P6 l
        CA(int ,int );
' o  x3 j1 `; C4 k2 S        ~CA();
' S: c- c; y1 m+ u% S" v+ S        void print();8 y: T  d3 r" J9 F4 q9 S# I
4 L+ [4 d, F9 h) L% W8 {
private:
4 c2 f$ T7 t; I: C- U3 n+ f        int i;
- e, d/ f6 R, R' }. j% Q6 n        int j;
8 H1 m7 _2 a' ~) W};
& f, H0 B( c# |" \9 o# a9 Q
# ]9 O6 W. {: ]% n3 H: d$ KCA::CA()
; [" M3 X- D2 @{, t% n$ e: K8 L. s  l! ?5 U2 n
}' v4 J* m0 p6 x6 q8 E
4 o* z5 o6 \7 [* v; E
CA::CA(CA&one): R$ J/ `" ?' J/ `2 M" k
{8 x$ ], N1 E0 S4 u
        cout<<"调用复制构造函数"<<endl;5 v+ _9 ~3 A. g$ I, r0 D+ E- V
        this->i=one.i;
) k. b/ X! M# ]        this->j=one.j;' P6 G7 y* g) i, j
}
7 H0 k+ o7 s7 s% p2 Z1 O$ I7 G* T1 f
CA::CA(int m,int n)6 B' A; n$ B; V3 ]3 }4 V' {4 j' F
{
. `; t% x& a/ h; B- V        i=m;
) S, O' Q/ B9 A2 B: E        j=n;5 f7 n) Q* s$ a, B* H. c
}
, H. Z3 ~! m- u
$ q' U8 D1 m( j7 K4 ?1 _% vvoid CA::print()0 y9 k$ K2 O2 a: h( B& Z5 o
{
0 Q7 G  V2 c9 v* ~$ p2 V9 e8 I        cout<<i<<endl<<j<<endl;* n" Z9 T, S- J
}0 C1 R8 o. ]% ^' X. d+ w

0 |* K9 O5 ^7 G" K9 jCA::~CA()
7 n. l' z: t7 B7 a* z9 f7 P{
3 v; |. t1 J$ g! x5 X* v3 }+ q* c}) O- l( I4 K  x2 S% ^0 W: I7 H. ^
  p% C# Y( p+ p
#include <iostream>! m1 x/ r6 X3 o
using namespace std;2 ]1 B' l" m6 x
#include "复制构造函数工作原理.h"5 v  x9 W0 W$ h/ B$ q& Z
int main(void){        + G/ k. T( H4 D0 S% D+ ~
CA a(2,3);        
. m, y* d7 j8 L1 I: D  G0 Ba.print();       9 g0 Y  M; T" O
CA b(a);        
+ b  B$ J% Y6 Y; h  T! [b.print();. Q" U; w. H7 G1 Q& z' m' Q
       ' K( l  M( S, h5 r; ]: g5 W- V
return 0;
3 ]9 q6 H; s" m, e" y( \2 J}2 X# C, N% T0 d& D9 [% u+ D
4 b) a4 U" ?, J5 l, x
1 ~) `/ R  y# s% m0 D& K$ x
* m# F0 Y! f$ J0 q# x; A) j
! C3 V+ d6 W' ~. ?  [3 e$ \, @
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:2 O) Q! i9 F: E8 u
1> 初始赋值时:CA b = a;
( }# y1 o- w( A$ L$ X3 g3 w2> 按值传参时:void myfun(CA ca);; \, n; ^7 I7 r* w
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层

: b3 B/ `- Q5 D第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-7-3 18:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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