鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
' L0 B& [9 p' j" b& R
+ ~" M7 x8 R- Q9 Q& Y2 aclass CA: q* t! m; L+ e8 V: s- @8 s# o
{
* z" B3 V" \; m3 M" Upublic:
" i8 m; L7 ]) ]% ]* E' D( r1 \5 C        CA();
; h6 ^  k) @$ H" Y* i" \1 O* _0 f        CA(CA&);$ P8 z1 E3 W, b) g: L. ?0 \
        CA(int ,int );/ A- g0 }8 N, \. i8 ?8 [3 ]3 t
        ~CA();
( q" V6 l% W# O3 C        void print();
6 k' v4 }) b0 W. I3 @3 z
' h6 h: v5 O3 M$ z( pprivate:; w$ g% L# i0 e
        int i;6 H+ e1 U" E2 j" E4 b; K
        int j;
6 ~% P* Z; v8 v! Y' q) R, y};' I, n6 t+ W7 X6 t; R( o
5 u2 S0 K& M1 ]3 C9 K
CA::CA(): [# ^7 p  }% v+ a
{3 X' e4 o) u* L" v5 d0 [
}
! i, ?4 W$ `) j* ^1 {# r- k9 K
# F* F  V' q3 x8 aCA::CA(CA&one)
; P2 T2 W$ L; h{
* s0 ^2 E* o4 s- ~( I& U        cout<<"调用复制构造函数"<<endl;1 Q% O# O$ [" y/ L% D# N& a
        this->i=one.i;9 b! `7 {) K. w8 K  T5 B8 |% V4 W. G
        this->j=one.j;8 y  A% Z( q, G: m
}
* ~6 N1 B8 y% g
- ]* |6 x+ Q) ~4 n& T8 q& a" vCA::CA(int m,int n)2 R5 _( ~! t" `" T: m
{, k( p" w3 g3 T7 @$ Y/ I% B$ d: W
        i=m;4 t: s/ w3 r+ d" u
        j=n;/ P6 H' u2 L) w! d
}
! g& V. y9 k/ g8 s1 W* }$ ?
3 t) S  _* c+ M( P+ j9 z/ B, Lvoid CA::print()+ p# G$ T/ W0 b, ^
{
7 ?+ G: f! @9 s' C) m        cout<<i<<endl<<j<<endl;
: d4 A/ o0 V6 N" ]' f) L4 l# x- g}
, F, O& U# x- c3 K" s7 I2 q! U! `; i5 X; r& J0 d
CA::~CA()
+ c3 S6 C2 K& s* n{
) Z4 F) U1 g; T$ G+ h, E8 k}
7 [+ n$ ~; {4 _5 x8 e& d7 e( i9 q
#include <iostream>+ H! q* p4 [3 H0 x; ~% r/ S9 S: e
using namespace std;
1 }4 |+ \4 r/ @$ ~3 y. }#include "复制构造函数工作原理.h"
1 g8 b8 W3 h; ~$ g" ]int main(void){        
) W% h2 S1 y; v# VCA a(2,3);        
% f# q- o" d0 e3 g$ sa.print();      
" [# s  n8 U: U+ M/ s) X CA b(a);        5 t$ g: T; G) t  D( Y1 U' r3 B
b.print();
) d, I0 @! V+ R4 f- M1 g       ' o% j4 a" `1 H9 ^9 |+ o6 R( d
return 0;5 t% k8 y( E$ n
}
3 a/ N" e: C' I0 u( x& A% e
3 C% A7 ~+ L- e! j' t& G- B7 l; p' U% b* E) J, B5 Q

- S9 O2 a5 T) |5 x! \  L  z+ \1 k$ Q, Q
1 G* Y# v9 i1 E: K2 r
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:: x: ]. [8 k) n) n; O
1> 初始赋值时:CA b = a;
) \- ?3 U  N, T0 y3 R2> 按值传参时:void myfun(CA ca);
. n* ~$ u& r& I3 ~" E' x: ?2 |3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 " S) \" y. ?! H$ C" S
复制构造函数在以下几种情况下调用:
  a* b) P" k2 }6 {7 I( J( a4 g, c1> 初始赋值时:CA b = a;
; t$ Y6 b7 ~  H8 l2 Z" d$ w2> 按值传参时:void myfun(CA ca);

. L/ x( \( u4 s, l' N0 w# h# M5 }+ a第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-5-31 10:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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