鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 " n* d  Y- m+ w" E' l6 R
- j% P, r5 o1 {/ e6 u! [3 l  _' O
class CA+ [0 q* R* n( b
{- a8 {6 s' f5 J6 U) \  q0 r* ~1 {6 I
public:
4 Y, @1 A, `- H$ d% g        CA();; W9 G+ K; r7 l0 N& k9 L) w0 x, D
        CA(CA&);  `0 A* F$ C6 I5 r
        CA(int ,int );
7 R2 l0 l( B9 K" b& [( c        ~CA();- d& h0 Q' `& Z8 z& c
        void print();$ P& z% Y& R: _5 Y8 m, o2 p

8 V# z0 Q2 r8 O+ S4 P0 j2 dprivate:
0 |- c$ p9 E- x1 z+ g        int i;
6 x9 T6 ^# M8 E        int j;6 B7 S; f. F- U
};
: i0 K" v- Z2 I2 G$ a" v/ x1 @/ j' K$ A: l
CA::CA()
; G4 z- V" ]/ z8 b% r5 {" y{
( z% h  I, g2 t8 k}
  ]/ }0 s/ @* B! X; a' {
4 F$ e) j# G  C2 qCA::CA(CA&one)
' C2 R3 f0 W9 d& j+ j% \& l, v/ x! i{) v6 A" ?. \' c) ~1 b& Z. n
        cout<<"调用复制构造函数"<<endl;( W% q/ ?7 J" E4 R2 m% X. S- b
        this->i=one.i;
3 L& V; f$ y. h9 Z7 i- k$ n        this->j=one.j;5 g, V- r% \5 ?# v
}+ G0 M' b' L- L/ w0 O5 E
( I# N+ s0 O) G1 j
CA::CA(int m,int n), {' U% i- P( m3 o0 l- ?- _
{
# g) \% X# }% u  W" q0 M$ _        i=m;& y. x; ~+ e3 ]7 O/ Y$ E. f
        j=n;7 `& R# A/ c; w6 d5 Y. S5 C+ \
}/ D( {$ S5 {8 o. V5 `  M
9 l2 \+ A9 j( |& U( m# ^
void CA::print()
& ]2 t2 j9 B. I; S! c: f{
% R( ?6 s% f7 w1 \7 l        cout<<i<<endl<<j<<endl;
0 h; O, t- ]( z# @0 ^* e}
' S; A/ d/ W1 i4 ^1 A7 u7 W
; a& h) I# B: j: P! g1 U$ YCA::~CA()- s! X" N8 F* P, M% R
{( C& e  o: k' L: W) W
}
: M" a: O: d* y' Y+ f0 {& R6 ^
+ I; q; I' m0 Z3 N1 V$ g#include <iostream>
0 _6 X! B, m# ?) I6 _' _% k6 j% Zusing namespace std;
3 T) n( k* R: e% E. Q7 V& C#include "复制构造函数工作原理.h"" d9 W; Z# `6 d
int main(void){        
" m. l& i7 _! t+ v/ P+ }  i9 u! ^; ]! eCA a(2,3);        
7 |8 y4 M) @" ma.print();       - e8 a, Z0 a, W5 d
CA b(a);        6 O5 ]( u) y# b3 k& F
b.print();
7 m4 o+ O; w8 l/ n3 S7 ~4 ]       3 F5 K  P% s0 e+ @# G* d
return 0;
4 S8 _9 |$ b" I% \6 c+ j$ F  S}
4 C0 X( l% C: U" I) d: c4 h; A4 y, }' p- `9 C8 N' u1 I7 D" [+ h

* X2 T7 ^8 o: D/ x8 ]. [$ z
1 C" d5 Q8 f# V# w5 S6 }3 ^/ j  [% n8 o2 E8 s# Q! t
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:2 z* R# P1 U7 M# \- e0 n( `& U
1> 初始赋值时:CA b = a;
( l8 P! n) @$ G, w& I7 E, Z; B; j2> 按值传参时:void myfun(CA ca);
, w0 N% s3 s* N; _3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
4 a" S% S2 s: b6 E+ g  M
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-2 02:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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