鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
- Z9 m1 C& n1 h) A) U6 d/ E; O* h1 ?1 g( o: @  f
class CA
4 X: l- h9 k' D! `5 c: D{
: A; T3 e& Z, x5 C$ s2 Upublic:
& d! d$ M+ r6 R' j" L9 I        CA();. @/ v3 j. p. |- Y# Y8 u
        CA(CA&);
  g0 w$ @" r+ `( p- h1 \) e) n        CA(int ,int );
% p0 x3 ]4 S6 A0 t        ~CA();7 G9 g1 D. D/ c7 N/ @
        void print();$ I5 R( ~, r  Z# ~/ o

- a$ n* T, b1 w! ~private:3 l" A* W( v9 G3 k
        int i;3 O) K8 q# q9 w
        int j;
* Z1 R4 B8 b, @};7 t- ^" k- s- M6 W4 [+ }: k3 O5 I

& a+ s" z9 x  u) i  u9 Y4 j& ^CA::CA()
6 l0 |) I7 n; l{
6 d! F# i, n! ], z1 v; d}
' }1 [( U  A" S6 g% Q( }. m" w( e0 A" I; _+ Q1 `5 L% L- n
CA::CA(CA&one)2 X: G# x% p  T1 a+ N
{2 s+ _% o2 C) ^# i$ h$ l! A
        cout<<"调用复制构造函数"<<endl;  J$ \3 Y: p. @$ k
        this->i=one.i;
2 f" G, h" p* C* d8 J        this->j=one.j;
# o$ Q6 e! L" p( V- Q7 f}
' Y" P; {! {. w; p
" }( R  E2 }6 I* {' X' WCA::CA(int m,int n)
$ N( ?0 m! B# b4 T& c{5 I# l  i' f5 A' x0 t
        i=m;& }" i6 r' H$ P9 T' d$ i' P% u
        j=n;
, B% a  x0 k& f}3 o# G8 I% G/ ~  B# g
1 j' a  h/ S5 i% H3 y% u
void CA::print()
/ y3 B9 x3 A+ _0 T% b& |{$ M/ V: o3 ~; c
        cout<<i<<endl<<j<<endl;
; W) n9 D% Z- S4 @  M: p* L}
3 {# m, K, I6 k/ d8 \
/ I" u1 `8 m/ h' _  u3 eCA::~CA()
6 Z; @" P& }1 p6 K9 ~  l4 i{% A3 T4 L; s5 J( O& c
}* B; G- j2 a0 A, }. t, q4 s. o

$ R' e8 _0 l  X& K' `% U#include <iostream>
5 D: }5 N2 ^, P/ O) A) Eusing namespace std;, F/ O9 I% d) Z$ {8 ?
#include "复制构造函数工作原理.h"
' X% x' B+ ], Y/ d% ]# E& Z; ?int main(void){        1 `  K0 o9 W6 Y4 o2 y4 K
CA a(2,3);        
) m0 l% N) K% j5 Oa.print();       ; E: E$ [" N3 Y
CA b(a);        / E7 c+ `2 N9 u% Z
b.print();
/ D2 z( g7 S* Y      
9 v, ~9 Q( w& V9 J1 z/ ~5 q3 q, v return 0;5 |+ j4 V# C- ]. I
}
" Y9 H8 r, l5 C* u
) f' z. ?1 C* z4 y  ~( n6 g7 R) L2 n! {: h+ e. R

) ^+ t2 J) u- h- I3 f) M9 ]1 c0 i1 ~6 r0 E
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
; f: {& h, J3 D& b- _/ J% D$ z! t1> 初始赋值时:CA b = a;
' H, [. E6 ~  ^2> 按值传参时:void myfun(CA ca);
; ?3 i: F: M* ]7 v6 {3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
+ `! t( O2 H1 a- `& h复制构造函数在以下几种情况下调用:
! r/ m5 {! }8 K2 W; P$ ]! w% c; ^1> 初始赋值时:CA b = a;
9 R$ E- E  x$ r6 U* y4 {2> 按值传参时:void myfun(CA ca);
5 q% B0 x" \5 K
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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