鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 + J8 y* ^' u; y$ \8 @

8 f. X6 E+ @2 _3 ~: mclass CA
8 j! l; Q: T7 ~; w: ?# [{, B% K3 u5 ?" e6 Q6 J0 v
public:0 |5 r/ F" k5 g
        CA();
& |: z- u! v1 n7 N        CA(CA&);
( u- J/ k0 c5 B3 L, I        CA(int ,int );) Z' u1 g+ h+ X7 _
        ~CA();$ J4 j" K% u; ^  \0 D" _% h
        void print();6 d. X  Y, ]8 |' Y8 @" ^
6 F4 P) V8 o# N6 U2 N
private:; Y7 L( \/ ?' H" n# s1 F, W$ G% C
        int i;; x' y# N+ c; y5 d- _2 p
        int j;& |4 O* U1 ?! @- `0 T
};
+ |+ f. ~) @7 z
# t: Q1 n, S2 p" W- s4 ]6 N9 @CA::CA()$ ?& t$ N7 ^& o7 z5 l  ?* A: y+ H
{
4 b, |6 Q/ t  z1 c( B2 v' ]}
7 c; j; h% G  _8 S, T5 x2 q9 D" B% y' R
CA::CA(CA&one)! B' V' q( e- G: P0 n0 ]# q- ?
{
$ i& I; x' M/ h* ^        cout<<"调用复制构造函数"<<endl;4 S: O( ^5 v4 \6 Z/ K) P' r9 V% W
        this->i=one.i;
# O. ?0 l, b7 ^* u) a# V        this->j=one.j;; @# Y0 B+ _* [- K  @$ [
}% Z0 ^! E9 x' I* W
/ l& @. F9 @" B4 J, Y
CA::CA(int m,int n)
3 V4 D8 C& _# ?; [( ]2 w{
2 s& G1 R8 o+ g8 i/ `        i=m;! I! r2 a$ b! F3 |% S) C
        j=n;1 ~6 t  _' T) q
}
$ M$ W0 i, d" R) M0 J8 |4 {# x; y" g9 T' V
void CA::print()
  X1 t+ [6 E  @4 \{
% p: D( W4 n! Y( ~$ N2 q1 o        cout<<i<<endl<<j<<endl;
) [" S& }; S6 s4 g* O5 k}& _- m! J# R) t& l2 z
0 ]5 V+ N% ^2 u+ P) G5 O
CA::~CA()% e( U; e1 I% d% V
{
3 Y- l4 n" u7 X' q) i, I}
1 {3 P' N0 u5 f3 ~
2 W1 c' B4 f: e, A#include <iostream>
6 y. g% \' X" n9 m. Y$ Fusing namespace std;
0 u/ l* |) M/ \; L' q9 m6 F: S% o1 t- h5 e#include "复制构造函数工作原理.h"
' i+ o" \( m. [$ i9 R/ Q" aint main(void){        
  g- s! D' y! B, \9 t9 a8 m7 ~CA a(2,3);        
9 s. J) x( R$ b' ?, x. }a.print();       ' y) \. O7 N- J# q/ W
CA b(a);        
8 i7 `& o1 g0 g0 J  {b.print();
% S9 g: `  B. I2 b2 u       3 _* T$ `6 w- h& Y- {6 @! k1 a  c
return 0;
" r" J% G9 t% M9 o  B, ~* Y5 s}
& m3 ~0 T: I% Y/ W& w: ^4 g  w$ k. i' v
, w, _0 i  B" {+ M

1 O. n2 v, y! D; J$ w
/ g" _& N1 |. F* K+ M% I
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
; S  S) Y0 n& H* u' y1> 初始赋值时:CA b = a;8 @5 I' e, a: O$ X
2> 按值传参时:void myfun(CA ca);# h: C" Y8 V/ @3 L  s
3> 函数返回时:CA myfun2();
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 # X* b  j1 }' O: j3 V7 `
复制构造函数在以下几种情况下调用:/ u, r% J  f! M: ~9 X! u' w
1> 初始赋值时:CA b = a;
" \7 i- I1 s) w$ F% D# y2> 按值传参时:void myfun(CA ca);
5 _- K/ A$ q' D
第一个应叫初始化,不叫赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

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

GMT+8, 2024-3-29 22:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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