鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 + W) t& T1 R/ r& ^

: ?: z2 d! y5 ]3 Z# O% F) r- bclass CA
# i+ o/ j. h$ i( @7 Z$ I  Y{- c$ T2 i) r" h; F  z$ s
public:
, ~; A5 b3 `: \2 S        CA();
+ w- V# h. e9 r- w2 {& w0 T, U        CA(CA&);
% Z$ T) h. b; v8 u: _        CA(int ,int );
" `. Z5 u7 l1 }# ]5 }: g8 {4 [        ~CA();
7 d2 @9 h0 T, ^' c" G# R1 v6 T        void print();
  U3 W- q! C' i, @% Y0 I4 y
# t8 Z+ e( x6 H# S/ fprivate:
7 \# S* g; V: B; h" ~% s2 R        int i;- G  P2 F$ Z! }+ H3 j( d% W
        int j;2 ~( p& {) b/ n( T) c: |
};) G4 c( e/ ^1 U6 z" q" W4 E3 _

6 Q6 c& H" U4 A- @& S2 u2 kCA::CA()
! }8 f' c* [; T: ~* @, [5 d8 h* h5 n{
, Z5 F4 h! t0 |8 _! s$ D+ ^5 L}: W0 @* t0 f) `, ^. k
6 k- k: Y2 A0 w& {" S$ E/ @* E6 t/ |
CA::CA(CA&one)
$ `# z, A/ K5 R7 T' Q8 x& ]{. X& v4 J  n; H) R' t9 q
        cout<<"调用复制构造函数"<<endl;7 @( Z' T8 Z. z2 U0 F* O
        this->i=one.i;
4 E0 r5 s# P! _% V1 _0 Z* ]1 z        this->j=one.j;
8 Y9 @  v5 h! C; e0 Q}  w. I' ]. v8 F+ N
" o* `# G  }2 ^0 g$ X/ Z
CA::CA(int m,int n)& G; Y" m& D- _" n# O
{: x) t1 l$ y! }: _9 f' s
        i=m;" R, _! ^/ z$ g( z" n
        j=n;
7 s( M) D5 y8 p5 C}
  K6 K3 K0 H% q+ E7 y- u1 Z
: \1 L# V  f0 V* H+ v! W# Lvoid CA::print()& t2 Y" x( `; w+ @2 t
{, J1 ~; D, a' v6 M9 J$ k! s
        cout<<i<<endl<<j<<endl;8 V1 X- a1 a) q" n( N, y3 i5 p, o
}  d( Z5 a9 m" y1 _. v7 P2 A4 \% z

- P9 O: T  }# R( vCA::~CA(); g7 c/ s. K9 r) ~  L
{# \6 D( P8 e% ?, }
}
* Q6 N; ?. c) T! }& w; @# }5 {4 D- e" c; }) |8 {) J- h" T( ^
#include <iostream>
9 o0 ^7 j$ O+ j7 q4 j+ Ausing namespace std;" O* Q0 f2 v, ?
#include "复制构造函数工作原理.h"4 l' [, T% y9 q& z. S$ D9 v
int main(void){        0 A% I+ \; h6 j' B
CA a(2,3);        
, z1 _  }" Z0 ja.print();      
% N6 B* K4 s; J9 g+ v2 K CA b(a);        3 f% ?4 z8 M' X# r; ~& ^' n
b.print();9 Z8 a$ v3 M3 R+ |& P0 s7 R
       9 x& O& H& F2 C) `/ A1 k4 J- e" ]2 v' ^+ Q9 r
return 0;% @: |6 c& B# |6 r4 z
}4 H3 y$ e2 F  u: K( u/ _) l

7 I2 X( _1 m4 {5 K; n; ^5 s/ L* k" h8 }
6 k5 M1 e# f% f8 [
4 J5 P. @0 b& t) y0 s
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
$ {' [$ N# v2 s( B1 v* A" U1> 初始赋值时:CA b = a;
( H$ P7 P' B3 r' Z/ M" o; \2> 按值传参时:void myfun(CA ca);
: ^) c3 |# q7 ^4 D3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ( X! s4 D8 }& {0 k8 N
复制构造函数在以下几种情况下调用:
% a0 M2 j% C  E3 j! `1> 初始赋值时:CA b = a;
$ Y% n6 P, Q6 y; P% J4 n' n2> 按值传参时:void myfun(CA ca);

. l: M0 S' r! H. P& m+ j第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-7-1 14:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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