鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ; l: r/ n9 V/ K; Z) ~2 K

9 ]; m, n, S! E* {: Aclass CA3 E- y; ]0 z. H* e% _
{5 l8 [. {' Y$ H! [- h. u$ ?
public:5 K! E( j8 Q6 l. |5 w
        CA();) v) M4 o; ?2 `: M1 |
        CA(CA&);. m; m& q  N* Y/ D& Z* c
        CA(int ,int );  N5 ]! O. I7 V
        ~CA();4 x1 O% I$ u* F, z, }
        void print();
$ K3 F) X" t2 ]( O& ]/ q
( d6 v6 i+ v; R( A: \: w( iprivate:
4 |  C% V) H* v* ?- I        int i;) Z( a. V' m/ V/ g% ?  s& X
        int j;
! m/ Z/ E. V; K  _8 O3 n};! o. U" l* F: e) l* q7 S$ z
8 m* c6 w' h& m) y1 n
CA::CA()
: x3 _5 h5 Q. E$ g/ c  O1 h( _{
, v' J. l. R6 I/ l6 t& n- A}4 s. D* ~/ t' t+ f" C/ P
, R0 L. F9 `5 W
CA::CA(CA&one)
. F/ {/ i$ q9 i* C, _% ~{
1 n4 A5 `- y6 t' b        cout<<"调用复制构造函数"<<endl;
* W; O7 o$ R' V! x. t        this->i=one.i;4 u! z# d" r$ M8 R$ \' U2 A4 e
        this->j=one.j;
8 X+ z5 _* R) b6 m2 H2 u}
2 i$ Y7 `, M# b+ T" \/ m' d7 P
; }. d" I/ g* P$ B5 H' PCA::CA(int m,int n)) w; B6 ^: j3 X. v+ z+ k
{: T6 j0 h# }0 {& ^
        i=m;; z' ^" Z) T9 P) c  y$ C: W
        j=n;4 e: V4 d& A' ?) f
}
. S, z9 i3 r1 m  |: V. }6 d, B9 m6 o0 {& U- P0 h! g
void CA::print()- D' n4 g. m7 ]5 }+ v3 W
{
4 m* N7 T+ r- i        cout<<i<<endl<<j<<endl;
/ X' x: Y  [/ M2 H# i$ p$ i( u8 m}
% L! n% e) [' `8 B* [6 w7 P8 [, i. U4 j; R' ^
CA::~CA()
. R3 E+ H0 o+ ?+ C{
8 e5 O& C! U, B1 V% U2 D}
+ U% c( l5 g  v2 R3 \* z+ k" Y
6 V6 M+ l; B, k( B0 A  w: y#include <iostream>
: U% e: `+ x; q0 J* j* |  E* Rusing namespace std;
6 ^- G/ ~. r* O, _1 N#include "复制构造函数工作原理.h"5 K; Y2 T: {* b0 P
int main(void){        
- _1 e  y/ `" P# L( w  h; `8 CCA a(2,3);        / Q8 y6 t' @, e) `9 p" k2 ~$ X
a.print();      
/ t6 M) F) g" ^! v  ^ CA b(a);        5 s! Y9 P2 ~/ ]: z+ K: S
b.print();
$ S; V9 z  ~3 y      
' Y# S6 p  k( n6 ~- G, s return 0;
. P8 c6 r3 Q" w}
2 L0 v  l6 _; [* Z8 z8 o; _- m# O: {, {4 O; u# ~% a# b& h7 F
% |  ^0 y+ W5 g7 E: W

$ K! e2 H' v( A$ b
$ v& t( v1 m" q' V% Y: }
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
# |5 W0 Y; o1 x2 s/ u# ^$ M& r1> 初始赋值时:CA b = a;( `( N5 P+ ?' M1 _2 Q
2> 按值传参时:void myfun(CA ca);
# b( M; Q( u) s/ M3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
; ~* j' F% J' ^7 W/ j# z复制构造函数在以下几种情况下调用:
' y0 Z9 W2 x6 O7 g% u. a1> 初始赋值时:CA b = a;
& d! @9 b2 l' n& [6 ?8 J2> 按值传参时:void myfun(CA ca);

- d1 {, u% ]* A& r) |" q% N第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-15 19:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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