鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ' ~5 m3 r, c- K, d
  _$ t/ r+ V5 Q' ~, w1 T0 t( y
class CA1 z" n/ b! J- j: F
{
9 |7 n+ O* ]6 }; G( `6 zpublic:& d: y. m/ P6 G% A0 o% d9 s
        CA();
- u! U5 D* x: v( k1 H        CA(CA&);
* @' u' K' \  d0 K0 b0 l* r0 g! J        CA(int ,int );3 b  o) ]' H2 i; k- l8 F
        ~CA();
) E9 r% a3 {; b6 o        void print();
4 n# A' w/ b7 z! e
9 {) Y) b( j* _% s5 \8 nprivate:
3 ~& ^8 ^" t* k& t+ {' o        int i;; l6 {4 w: g( t0 ]3 {, P0 x
        int j;
8 b  r  J& j) h- s2 H, F};3 v& r/ H3 q: o, T
  Y- F% u- L* Q9 S$ W( f
CA::CA()% J/ m- x: P7 E
{
; u# K% V5 J* E# z7 m}! h! u0 `+ m, d. p. \/ {
% p: P- B, T$ y! Q
CA::CA(CA&one)" |  k; Z" x- V+ T/ I
{+ L+ W# N- ?3 d- z) X1 e
        cout<<"调用复制构造函数"<<endl;+ T9 ~9 N8 b, W! p4 Z. W; _( J
        this->i=one.i;( \+ V- n3 a- z0 y
        this->j=one.j;9 y* o$ @6 r6 y. r  _
}
) X6 \' l  K; C1 V( n- \' F: q( ?2 Y$ G7 x
CA::CA(int m,int n)
1 K/ ^4 }3 I& I0 s0 h3 V{
/ o2 B! ]/ w: w$ ^        i=m;4 H$ n% H. ~9 p9 v- G: @: O% M
        j=n;8 {0 r: N! r& V; S9 J1 B' \+ K6 l
}
: z5 f$ m. U5 j( G& l9 D( F" ]1 }
void CA::print()/ Q9 Q7 d5 T8 R
{
5 c, D9 W+ m9 L        cout<<i<<endl<<j<<endl;
- P4 Y3 |1 p0 I' s0 D+ M8 E}
% C" C. k* g& b, d4 }5 \% g. Z
5 u6 }4 D' {. c* p- _+ k- RCA::~CA()
  Y* r! b' p3 b. y{
) c0 J: D* ]# p( x8 ?8 ]# ~}7 Y/ K# t" y  d( D4 r- O
( u. \- S7 T' z' P& T/ e6 M8 ?* F: R
#include <iostream>
" `$ o0 S8 P( ^9 Busing namespace std;
- ?+ x" i9 U/ ~, W; E6 j) n/ |#include "复制构造函数工作原理.h"& ^4 t" {6 ^  H. z7 ]' L4 S
int main(void){        ! ^5 a* n& F9 K0 D+ G3 k
CA a(2,3);        
3 d6 `4 `& t  t0 G" A  |  Oa.print();      
: k8 X- W3 j. _2 @ CA b(a);        
$ _) o' A( s3 v! K$ m" a5 @. \b.print();+ Q: {8 Q+ b" U
      
1 \: T5 s: X# v) y, J6 A; c+ `) w return 0;
! d/ [" A9 k5 M0 y; A}
0 D7 ]4 P% {, h6 u/ j  N. P* U4 @- k9 a
& t! Z- D! E$ v! X5 @# g0 f

0 p5 u& q# ~6 U2 R2 E6 r
1 b9 l. _5 q7 _: [' ^! s: g) S
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:+ j+ }8 g: I6 P+ R' G# d% g
1> 初始赋值时:CA b = a;& B9 k3 x* a+ G, K
2> 按值传参时:void myfun(CA ca);1 S5 y% v% P" W3 F+ w1 ~
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 8 C( |& }  m! ]
复制构造函数在以下几种情况下调用:
" Q% L2 p# r4 j" N# z  c# z* m9 U6 u1> 初始赋值时:CA b = a;) f' E/ _2 u/ e" t2 g7 C8 v
2> 按值传参时:void myfun(CA ca);

- ~# A) f4 b" _/ i) S8 e3 q第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-15 08:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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