鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 : c$ a% |: D* `3 W* o
  E6 {! {0 ]* ^  [
class CA" k8 Q1 v* d" z# r
{* ^, C+ q  u$ w. P0 i
public:
) l9 v7 S& E" m# x        CA();
1 H# }1 M. F; H% u% d# f! O        CA(CA&);
0 b5 c' w5 ~) E% u" z9 @        CA(int ,int );
/ S5 X8 |3 A+ L) H1 V        ~CA();  h: F2 o" W1 _- D2 B, T
        void print();+ ?% A3 `% V' ]( w# V0 \6 S

" [- ?* y! m( b' dprivate:
4 G. H1 ]; F6 @4 ]) d  g# S7 L        int i;) q4 }! @- o6 m& ?6 m+ h
        int j;
# a/ e" q4 B) t+ K};0 g9 y. e! G- f  f$ _

" U" c( P) l/ A+ ^2 e6 MCA::CA()
8 F8 t) O) T; V6 C{
' u! z! f! d" {* |/ G% w9 l- I}
' k  H) {5 S7 U4 ~3 ~$ L2 N9 L4 r$ W4 i! [( X% N! [( D9 W
CA::CA(CA&one)) a, f/ Y$ m3 V- s3 n. v) n+ V
{/ M8 z' y& c& t$ p9 D3 j& R
        cout<<"调用复制构造函数"<<endl;& w5 G0 Z& H, q9 V
        this->i=one.i;( O3 M0 f0 L" g, ]; x& a$ A
        this->j=one.j;0 k: z$ W9 |7 b3 P/ V9 k
}* }; c# z; K% m7 n& _: A4 s* i

: e2 |+ N+ M/ O5 ^+ P+ h3 m: ~6 n3 ^1 fCA::CA(int m,int n)
5 O1 g* F6 |1 q6 C0 \/ i. s  B{
$ m! k, Y! r$ O/ D$ a        i=m;
, I, _. y* ~, c        j=n;# L, Q) Y2 {9 |2 r
}
% ]+ b2 @1 Q. P% }5 @! d9 t
- h8 O' V! {0 a0 Q/ O3 xvoid CA::print()
6 _$ `, y- ~5 R. @! n{
" N1 D4 H# O  C- P& Z/ ]* e; W* {        cout<<i<<endl<<j<<endl;
* }0 p6 \) Y1 m" ^& E}
9 J" U; ?% U) I8 R( f* _
- _* y+ r9 R9 p% J& t* ?# _4 \5 hCA::~CA()7 J/ T7 D: l+ ~5 L& }* f2 O
{
3 b' Q: ~; S6 a9 \, A& j}8 y' E; V0 ?& Y6 h* L
. B: ^( Z$ Z& |  O7 K/ R
#include <iostream>
+ z5 }; @6 x- gusing namespace std;0 }4 X/ |( @9 |! V) V2 K* ?
#include "复制构造函数工作原理.h"
9 a" K9 B6 V& L+ Yint main(void){        : j3 f% K5 ~$ ^& g+ r* a1 P5 E' q6 G
CA a(2,3);        1 o  p8 L# Z' s: `1 l4 \' A
a.print();      
4 a: D% U9 A2 A* N& i9 x CA b(a);        
8 H9 I) X2 ^1 ob.print();
$ {5 H& x/ Y5 U- k       . S% u$ m* P5 |& n$ s+ n0 r6 f9 _
return 0;
! C6 r, L8 @; p}
0 Z! O, O5 r5 d5 \- r, c/ I5 N& m" |" _

. T- Y1 w: D% Z/ b6 _1 r/ V
% W8 S. l  l4 h: o! A" E
2 H( `4 V, k- U' B
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:$ s5 S# ~, \0 z) O1 z6 e/ [
1> 初始赋值时:CA b = a;6 c% r' _2 J1 E/ i
2> 按值传参时:void myfun(CA ca);; X+ R9 [; W6 P( n, e) `
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 9 O: N' U3 Y0 O' m2 M
复制构造函数在以下几种情况下调用:' t% b, B8 s' Q0 F% [' x
1> 初始赋值时:CA b = a;
  T/ G9 e: |) H) @: L2> 按值传参时:void myfun(CA ca);

, t/ s% m+ H/ Y6 p% g第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-4 06:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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