鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 1 d+ f# @9 W* q

- m+ e1 ?, f; n/ mclass CA
3 G4 \. S/ U( t! ^{0 a3 F1 X* `6 t! A) X% _& i
public:
+ n9 m1 \" R9 J0 W  \0 ^  }        CA();# Z0 G8 [+ M! [
        CA(CA&);" i, K  t% u$ b5 ]+ E
        CA(int ,int );/ F' `0 l" l  ?  _8 J
        ~CA();
" v  B- ]9 V+ e, v        void print();- X: Y' v+ {' e- A9 W& j) O; d

  E1 @# G. D8 o4 \private:7 G# c4 M) w: N/ i3 T7 B8 Q- C
        int i;
6 V4 L" Z7 E& h& q$ U        int j;
  ?4 n! O  o, i& E1 i6 t9 z% m};& Y0 R3 O$ ~) g5 N& m* ~$ O3 V

% b* O) t/ N4 cCA::CA(). K% F8 K  w9 U- z, c7 q" u
{) J( C: [% S5 f
}7 H% D% e; |; u6 R: V( ~: Y4 w

0 b+ ]) P- V4 J* L- J6 c/ d. e( J7 O4 `CA::CA(CA&one)
+ u7 S, G! f+ c: F, w{
# J; w$ \) E, y, g9 ]        cout<<"调用复制构造函数"<<endl;
1 y5 g$ X) ]( t3 g3 f        this->i=one.i;
. H* Q/ c+ p" U# {" o% u9 W        this->j=one.j;8 B4 w" w/ X( `' P5 E, s# j
}% P2 g: M7 E' L. l8 u+ K7 n

$ f3 [2 x% k. h0 @3 o' ~CA::CA(int m,int n)* \8 m( g5 m9 |! P/ M8 `
{
* h7 x9 e) i" B$ [4 @9 W8 w        i=m;8 W$ J9 ?) j- X. y) u1 ?
        j=n;& B: F( \% v8 }6 V( ^4 f" Y
}- F( ?# ^0 Y( s# j/ u" P/ a
$ p1 k: i0 A, K) D$ F/ h2 w- C, |
void CA::print()8 f# F& D2 |- i
{
4 ~5 R  L4 z0 y5 h) d        cout<<i<<endl<<j<<endl;; Q+ r# |0 [, M
}
: c; ?9 E+ i8 q
( ?, j( J5 ]- f+ f; [CA::~CA(), N3 A- F$ B: p% l, S2 V
{8 x$ a, B- {8 |! F1 L! M
}
* d/ j2 S* F& q# c$ h; t- M
) p$ T# N% [1 O#include <iostream>$ m, `+ j$ E* p- \2 A
using namespace std;
; c/ ^* q  |0 u+ P; P! v+ I0 F#include "复制构造函数工作原理.h"
5 w- u# ^2 b/ s& H# A7 A( Lint main(void){        
: Y* |  r- R# e4 B; OCA a(2,3);        
8 H" Q# z3 y5 E* ^! {a.print();      
+ L1 i9 k9 G# C# [; m CA b(a);        
' f& X& h# X! F5 R5 q! L/ k5 lb.print();' L  E: b8 f2 J0 ^+ o
      
1 q! a" G9 @4 s, C/ R1 i return 0;4 w2 o5 U+ Q0 t8 A& ]9 \- T- ~
}$ M- D0 k$ x( X* o
* m9 ~, M, x0 m5 y# f9 P
# a$ ~& _$ ~& f9 K% e) g
5 G6 c+ y1 Y$ D  V
1 y- u9 R7 m# n) u, b9 S
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
1 W- t9 q9 K- S- ?4 _1> 初始赋值时:CA b = a;
/ M$ p5 p4 K- X2> 按值传参时:void myfun(CA ca);5 `- j  s/ g7 A  o; }% \7 K
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 / l6 O! Y4 K0 p1 B+ E5 d  A; c
复制构造函数在以下几种情况下调用:8 ?& U2 h& j  {! x
1> 初始赋值时:CA b = a;; n2 ^2 G+ g7 a' c
2> 按值传参时:void myfun(CA ca);

: S2 H; l$ u# l) t. `& o/ @第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-8 13:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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