鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
  f3 h$ B; [  Y9 Q
" j' {3 G. |6 r& s6 e+ Aclass CA3 U  v& @$ ?: n3 c: l
{9 n, g2 T. d: e, _& X9 V
public:
0 ]) l, m% O! x$ W' D( |) w8 l! ?        CA();( a& i3 C+ x+ w  F3 t0 g  [
        CA(CA&);6 r$ J' U9 H3 h* F9 L1 p
        CA(int ,int );
! ?' u3 {  d* C: A+ X) w0 B+ ^+ f        ~CA();: R" z: c  A9 C3 {: B% m/ P
        void print();  a( M& ]5 E* A5 _3 q( e

( Q$ _" }* M4 o: Yprivate:3 m5 C8 ]) C1 V, H2 k
        int i;6 U; O* F6 _3 ?8 x# f
        int j;
# B  P% U4 b) g& I) B7 s4 i};
8 K: J7 t) K+ q8 N9 [0 }
$ a. E% Z) I7 M/ W7 o) iCA::CA()
/ B* K- |, p# |2 ^2 T, ^2 `7 D{
* d2 @4 F& {# K' m}2 |% V0 e1 C0 ?4 w
& d, }6 b5 \) J) c
CA::CA(CA&one)
" B3 m4 d! @3 n# f" z. o2 n{. U* T8 p' f1 B: f, X. e
        cout<<"调用复制构造函数"<<endl;
$ `# N& r% W# {2 _        this->i=one.i;$ m1 R! r1 B* O- J8 ]* d* n" P
        this->j=one.j;
/ w5 Q1 Q* Z4 w) Y0 B- [# E}
5 X- T. k, Z& J$ |' L/ U
9 J# P8 g4 K8 ^8 |1 z3 D! J) HCA::CA(int m,int n)
4 h; ^  g) \9 ^' p% ]{6 a+ c; R2 J, b# g3 b
        i=m;
" _- C2 Y6 D" \9 T  N        j=n;
! X4 F+ n" u! I; q9 x+ @2 o}( `4 \3 r  |$ J9 x$ F1 s/ w
6 x3 U' n/ \/ ^+ t% |
void CA::print()
: Z3 k5 \! d: q9 i$ n2 K{) D+ s" q3 k6 T$ x% I" e
        cout<<i<<endl<<j<<endl;$ t" k$ p( ?( \! Y( J
}
9 J7 @# ^9 l& T3 R- ^2 B. B6 ]5 q! L: s
CA::~CA()
; P3 E4 P+ C6 N" f{2 h9 p: l5 R+ q! D2 M5 O# ^5 ?
}
1 j# n( d' h& W" ~- }  [. T0 A0 M. ^6 B. Q8 v
#include <iostream>
5 T0 o% e# I3 k0 qusing namespace std;6 q" u" u( ~. p2 J9 ^: \" q# [3 J% ]
#include "复制构造函数工作原理.h"' ]4 I9 B1 I" E- Z/ m
int main(void){        ' [/ c- k* z8 v& q' z
CA a(2,3);        
2 w- ?) S9 b+ r, s- w/ h0 R+ _* |a.print();       / f* o, E" [9 y( G' [/ L) o
CA b(a);        6 ~3 X( a2 P$ y' K
b.print();
4 q; N2 l. o; S/ g0 J) j- G      
" I( s2 }2 x7 K( O( Z8 i return 0;- D  C0 P3 `- s
}
  H. D+ U4 [" |5 c
) O7 s- ~* y" v0 `4 `' W( U# Z  `

( t2 I" k3 F7 G3 J. e$ u
% E0 p4 a6 z) z
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
1 x/ g. D) b( ^0 g/ i4 ^  e1> 初始赋值时:CA b = a;' Y# y4 g0 C) d9 @9 T& z+ g0 D, Q0 f" o
2> 按值传参时:void myfun(CA ca);/ }2 p3 h' l+ r6 a) _7 G) n
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
' P/ y% u+ C; S& U6 B. c* J复制构造函数在以下几种情况下调用:& [' U: i! v5 L# q
1> 初始赋值时:CA b = a;
& E0 }3 ?# G) U% b: j1 M: v2> 按值传参时:void myfun(CA ca);
1 ^: D, N. L  x; [( Q# X- Y: e
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-11-22 10:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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