鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ' |) t( v" A! @

4 F& |; c3 }0 d" m% ~3 wclass CA
$ f+ ~7 j3 k3 V9 o0 p( z) d{% m$ t+ u. C" H. ^9 g/ b+ V
public:
- |, t/ q2 n8 d! h4 v        CA();
8 T8 R* L. O+ n( A' F# A1 l3 X. x        CA(CA&);
2 Y9 v6 e% L0 N& Y$ I8 Y! G        CA(int ,int );
' f# Y1 M* K6 `8 N: e& C$ |- n4 L        ~CA();
8 Y4 l" L# _* z& P        void print();
# b6 W2 y3 W% O: o% g* Q! u# v& ?  X, ]/ `% q3 w2 T0 l( X  @
private:
" E% ]) ?# g0 a- u* n- o6 }& x4 Q        int i;
2 Q. L( d+ ^9 V, _        int j;5 ?# b% _* a1 Y: |% f
};, E0 C/ _. x1 G# {! D- N

) Y& C5 |; b$ O5 o- n( h0 dCA::CA()4 v6 I; N0 z/ D& P& b  H
{5 X7 K! K+ I0 N& g  a
}0 ^/ n% S$ I( R% J+ ~3 q# o  T

, x/ z& q  i  K9 R& j1 p+ gCA::CA(CA&one). K2 b' T: d7 R) m6 [
{, {" Z& B9 i1 u! R1 e
        cout<<"调用复制构造函数"<<endl;1 f" h  x5 \/ `" t
        this->i=one.i;8 m8 l( d( ~% g8 l: Z% z
        this->j=one.j;& Z- k& L6 B( e4 p- g
}
( e# ^# L2 m8 T4 Q7 s2 V/ e# _6 d' j! `- m6 s0 O
CA::CA(int m,int n): e/ t4 l) a, T- m
{
4 z  i2 z3 z: ?        i=m;( C* S7 e- x: [# w5 ^
        j=n;) o2 y" _/ y2 ]+ |7 U
}6 O# |; b! u  K$ H$ u

3 R0 B" V+ V" O" y* rvoid CA::print()& t; w9 n! G' }% J
{$ {  k+ f$ C* \' o  u
        cout<<i<<endl<<j<<endl;3 {/ N$ h3 R* |" n# x
}0 u: v) e$ n. N9 q2 `# u
( [6 a5 L5 p1 f( Z+ w3 ~- @! p& A
CA::~CA()
% w, M! ^4 x0 ~) F& N{
3 T- V$ t. Y) @}; s% q4 p& p% W% l' D# x
! k" Q' S0 W4 Y+ m  m: R- `* m
#include <iostream>
- H) ^1 f" M; Busing namespace std;4 |# O5 F) q0 z$ W8 Y7 ^* {* F/ v
#include "复制构造函数工作原理.h". a, b) n2 _$ V" U
int main(void){        & L( c# P8 Q* V+ X) X! M: r
CA a(2,3);        
' X5 H7 q: l+ M% q; t& ja.print();       ' c; p! p7 h$ f& j. {5 n9 @6 p
CA b(a);        
( R0 A4 s- [$ w% l& X4 Zb.print();
& V# r4 b6 R2 b      
& N! ^7 h$ n" i/ g return 0;
% I) {  `) c6 O+ T6 L' p}' Y% |) z$ G8 f" o' ]
  O$ k2 n3 ]( w& ~" ?0 _3 x
( A+ L9 |9 E- a: r/ X$ s3 R
! K/ W% c1 e6 D) `5 g0 ?
. W' s+ h2 B' j3 Y
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:1 _3 H( H% E% K' C! O* I% H  g5 T
1> 初始赋值时:CA b = a;8 R* y' X) i7 N9 R# v: J$ d. _
2> 按值传参时:void myfun(CA ca);2 ]' O/ u+ M4 x
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 : a  b( M* v1 L# j# r, U% W
复制构造函数在以下几种情况下调用:
+ f( H* M8 B% d, b! ?1> 初始赋值时:CA b = a;
$ T' j8 W- q6 T& s" C" B2> 按值传参时:void myfun(CA ca);

5 z# Y  R6 n* M$ g3 L第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-8-21 14:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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