鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 3 Q" s7 y  @, K# Z- D' K

! O9 ?3 a3 f) x. ~) s4 xclass CA
% k. B, t  v: b$ a7 I6 P: l{
2 H; ^2 r  Z9 ^public:* t" \) }3 R* p5 T! v6 a2 G
        CA();
9 p3 m" l, @+ e2 G        CA(CA&);
& o, k1 H/ R5 ]7 h( s7 b        CA(int ,int );- P. Z) `, L! E/ m+ P
        ~CA();3 e- c, c  g- u) E- ]
        void print();
2 R. p& d, M" Q# l0 _9 L6 |
+ P4 w8 e) \- B- E& q5 i( \, Qprivate:
" D9 s6 o- |$ p        int i;3 @" q  S0 B! O- J& X! r; ^
        int j;
! N) |2 X# l' B# F* ?};' P$ Y* z7 {  e  f; L

+ g4 c1 o3 B- `4 oCA::CA()
* B9 O- \# f5 ^{
2 F, z5 ]/ `, U8 B% U4 C; F0 |: U}+ [5 {6 }9 Z% M* ~$ N9 ~6 Q

* n; n- Z8 i! l4 K- vCA::CA(CA&one)' N$ Z' Y+ w5 ]$ v: ]
{
) V' [, Q2 i; u4 c( H        cout<<"调用复制构造函数"<<endl;! S: o4 Q6 W- `1 P* p' _3 y2 |) h
        this->i=one.i;
) v, ^* _2 o1 V5 @" \* A, ^        this->j=one.j;
0 n( Z, p( J$ N% @8 `}
$ x* ^/ j0 k5 n/ t
3 }0 ~/ ~1 C: t) l0 u1 `8 lCA::CA(int m,int n)
# Y2 |' ?3 Y/ V6 ?8 k{
# _0 ]4 B6 j/ Z        i=m;
3 l9 E, V% v, x" ~( |  G        j=n;. P# y  s7 T3 ^7 Y
}% ~3 i2 Q! Q+ H, I9 X1 ]& G
0 |- E& d" r. G6 Z
void CA::print()
- t: I& w9 x& h# A; l{/ p( _) f, W, z( \* ]
        cout<<i<<endl<<j<<endl;# y! u2 T* b3 V# L4 b5 T. N9 a
}
: I! N' v" _1 I% c8 i) q. S" v& n- J3 Y3 O7 E: F8 A& m9 r
CA::~CA()
( S2 C' F0 U6 ?. O{
* ?  A9 P2 U4 }$ p; V}9 u9 H' F" p& y6 r. Y

  i1 |. f9 C# r$ S8 ?; ]#include <iostream>
4 z% E0 V+ X  _$ ^) kusing namespace std;7 Y  n. \) {% i5 P
#include "复制构造函数工作原理.h"" T& x; B  Q9 y! h4 g6 K
int main(void){        
; Q$ H+ V7 S0 @: e) M0 GCA a(2,3);        
9 F  [" {6 B5 }+ Ca.print();      
' E  `; u  ^5 Q- A# I CA b(a);        & o% ?9 F8 c% x# r% H$ @8 \0 r2 D
b.print();- T+ r! p' G) H8 A, _# Z# n6 k
       & l( c% K7 z# \
return 0;
. Y* `* X5 ~% M) v8 a4 z, X' j}
( S# _, K  T- ?2 s+ ~) h! z( ~$ P" p$ n& e/ E& J2 A

) c, Y, ~( r5 e: N; Z/ @4 s9 ?
/ L" X& O5 M. ?( E. j( I3 p3 }  X& m8 \" q1 s! b* M" y) B
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:& C6 A+ V$ c) l1 q
1> 初始赋值时:CA b = a;
/ \5 g' Q, U$ f9 ^- r2> 按值传参时:void myfun(CA ca);5 Z$ D5 R% X, w; W
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ! l* n2 q  S% `1 B3 T) L
复制构造函数在以下几种情况下调用:
1 r' }# I8 y) g! C- E* E1> 初始赋值时:CA b = a;
% h1 n9 I; N3 S6 G. z. H: W2> 按值传参时:void myfun(CA ca);

) f6 B7 ^5 M+ [/ p( o1 A第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-2 21:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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