鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
4 H9 o) i4 H7 k( }3 n. A- |- p' }: u$ v' v6 R, ?$ [, n# U/ B
class CA, J: c! L/ q1 ?2 S; n! h! u9 W
{+ w" E* w6 s# Y; y
public:
9 H+ K: _) v3 w; n. `, p: d        CA();
3 ^! r1 S$ e0 V* a% r        CA(CA&);" a/ I! a  {  Z6 m" ~/ i- g8 g3 v% k
        CA(int ,int );
& o: n9 m* C2 K) L5 k% ~+ I5 J        ~CA();# y# y) Y/ |) q  t; R" }
        void print();
3 y+ E, e' H: H7 S3 e+ B0 O! x1 O+ l" X( _# G* h% o
private:
# `& Y8 V. [# n* e        int i;
# M% R5 l8 H6 `+ a! M% x+ |1 }        int j;
9 x0 G$ R. O: \. _4 z9 ?};
0 n, r/ R; }7 _: `% q  K* J: V3 O; Z6 G) c# `
CA::CA()
' ^# ^$ q8 k; P{4 ?: T/ |# `: v# K! Z+ r
}3 ?; j' e- a; A" d* R

  r2 G- g$ x, A* |/ h% PCA::CA(CA&one)
- O' K/ r/ J" r- I{
, N  j; k8 a& o" @4 ~6 _        cout<<"调用复制构造函数"<<endl;& U% S, M! H4 R! h5 z! z) C
        this->i=one.i;8 o. F3 n) c; E# G' {. ^
        this->j=one.j;$ p9 _8 V1 d7 m5 \, ?
}
8 Y. r) ]! ^9 P) P: Y  b4 o* V) i) A  R/ D' Z
CA::CA(int m,int n)1 v7 U$ D3 ]" Q' J) G# P
{. c# p+ N1 R, c9 s# K" a: J
        i=m;& T* M7 d; e* I
        j=n;1 w$ J  i! Q! v- S0 l5 b. C
}9 n' r2 b6 n! X0 n* S5 p
4 Q: v; z4 r9 U# U1 E0 w9 z
void CA::print()
5 Q1 b/ f" L' a. R2 [6 w{
% e( I: ]9 J  j3 p. L/ ^        cout<<i<<endl<<j<<endl;
4 k0 f4 X( K; G- D* [+ L}6 X9 C( w! g" Y5 }4 g9 r
9 I6 N# k- M+ l/ d- E6 ?
CA::~CA()
* F9 l# e5 |) Y{* I; [. J" m  j# H; B9 Z  X
}( y% J. d8 L' b9 V

" Z5 g3 _/ h; k/ U6 E7 {#include <iostream>
+ W7 J* }/ y8 j" rusing namespace std;
. i2 e' v3 k0 d#include "复制构造函数工作原理.h"
& Z" e; E! B* D+ l$ _" iint main(void){        
' z' w7 K- v) R7 }9 HCA a(2,3);        5 g9 p- ]* `: W, L
a.print();      
5 L' F: N$ H) V CA b(a);        
0 N4 C2 |' e$ f- n+ B! yb.print();/ O3 v& G9 _! E
       7 o! e1 ~- o' M5 e4 T  o
return 0;
5 f2 [* U# q/ F, u) ]" H* c}
5 A0 P. D6 @& l( T. w! W
: J9 Z$ w( ]  M$ _3 W: r7 \  K3 h) y) h
+ w1 J1 J4 p) e) ~3 F5 ]

, U; K. E' [( k: A6 j
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:- d  U: C, {6 Z6 t' U6 P
1> 初始赋值时:CA b = a;/ A4 [4 c" d: k/ `+ g- l6 C' \
2> 按值传参时:void myfun(CA ca);
/ F4 `$ ], |! q! ^' O3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
9 ^$ v# L. i9 l+ n" G6 I0 D复制构造函数在以下几种情况下调用:
8 o  R* d5 B. u4 T5 ~4 H- i1> 初始赋值时:CA b = a;" d0 K: A( N# y8 o4 S, o/ P! W$ O) f
2> 按值传参时:void myfun(CA ca);
* K1 \1 Z9 R! N. i
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-11-15 09:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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