鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
0 i8 P- e' ]* U2 t& S- r0 i2 h
- a( r/ Z# k4 l5 R4 V$ X2 U6 Cclass CA5 U( ?1 ^0 s3 U* Q! K1 H) x/ O" ~  m
{" L  R8 T" ^; d; O4 _9 k" s
public:2 [! v0 w- E8 m9 i( e" O3 W# K
        CA();
8 h! ]4 ^' D% K/ _1 n        CA(CA&);
+ l. B7 W+ [6 P4 f- G! s) Q        CA(int ,int );  j) E2 z. L( y! j9 U5 ^' m% i
        ~CA();
: L1 M6 B; a/ P- U        void print();0 T: ?+ s& c4 A- B4 _

, b; n& L  B5 yprivate:
- }3 [* O8 P; r% G: E; L        int i;
+ e1 C; b; `. G        int j;
+ C* f/ q. s  m4 F( R};; k/ }: _) q9 K6 G4 p
8 U9 y' w9 C3 \8 t
CA::CA()
6 \+ H9 M4 M6 Z6 f{
6 A1 Z0 c, s% d}
, d% e' C; p( ~( D2 e$ p, U: }# b& @. P! @) U: I) Q5 M
CA::CA(CA&one)
; j* W; o( e' k; @{6 K) S( \6 J' ~, g( r
        cout<<"调用复制构造函数"<<endl;7 x9 D& a2 `6 s: f$ y5 J
        this->i=one.i;; t; Y& ]/ ^6 J( n
        this->j=one.j;4 i) O' K8 |7 v+ A6 ?) p0 P# {
}
0 e6 ]$ `  l& [, }6 V7 r: b9 R& t% C9 m  v
CA::CA(int m,int n)9 a/ d" G" [8 o
{
3 n& b; X* \- E( Y! h/ Q        i=m;4 \! _1 i! Y) F3 x: [: \
        j=n;. O% |  A/ m( n. @* {0 H
}
& P6 v8 F7 m: |; P4 y" [5 g0 `% H7 H; i8 Y
void CA::print()2 v. v, P9 b0 O# _* t
{
$ u0 @/ [# p2 }2 M( S0 @" T6 y        cout<<i<<endl<<j<<endl;
& N0 p" f# @6 k+ H% ?}
* d; G: S! E% M8 S/ c1 d' R7 J* |# H& U' `$ u
CA::~CA()$ Z1 i6 `/ n0 r2 X2 }) F4 y+ i3 q
{) p2 G# c) p" H+ @# w+ M) ~" f
}
+ R7 @+ c' J# s2 @& ~+ v- o  z! H% C4 }  K/ M+ L2 ~
#include <iostream>/ B! _, o! ?7 _% l0 o7 E
using namespace std;
( |6 o  C5 Q# s& S0 M#include "复制构造函数工作原理.h"
" o/ G: B" T  @- j* f- Q( Eint main(void){        
+ ?1 O! M  s, p% l% h6 WCA a(2,3);        
( k: x! a+ X  a* H9 ca.print();       ) j8 ^- B! A/ A0 F9 Q
CA b(a);        
9 }* ~/ W) [9 f$ Xb.print();
/ N# s% ?, A/ v$ ^3 L       4 N5 e+ s2 ^, ^8 l0 V
return 0;/ g. s3 S1 b6 O3 b$ ^
}6 ^+ N+ K( c1 U! a$ b- B
* n9 R4 T2 E* j$ p9 L$ G
8 `6 M$ B6 F* k; }; H9 t6 M) b$ o" @

2 l, U2 U2 A, j$ V3 |; b
( C3 j8 M- t5 v; K5 V
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:" N" L; u7 y$ H' ~
1> 初始赋值时:CA b = a;; Q/ F6 W- h; V( h/ |
2> 按值传参时:void myfun(CA ca);+ b% U- d* p+ ~' g# v) ^3 T, U
3> 函数返回时:CA myfun2();
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ; C  |) _4 U* ~. r
复制构造函数在以下几种情况下调用:
  L" |2 _8 ~8 X$ l6 t4 |7 Y1> 初始赋值时:CA b = a;
5 K  `9 Q  h  L; i+ V! Y2> 按值传参时:void myfun(CA ca);
% c! \7 p0 x  V3 X2 a
第一个应叫初始化,不叫赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

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

GMT+8, 2025-2-19 06:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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