鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
8 h* F3 x% k7 h& S: Y1 T$ N& @, L) F: b1 [+ r) L* v' [  f( `
class CA
7 z5 M8 f; w$ |# H- c: T# [9 B{7 `5 [& l+ {) r4 @* v4 d) {+ u
public:2 v- M" ^9 n+ {, T  v" Z
        CA();
5 L1 x% E4 O  B. {7 O' s1 a        CA(CA&);7 I: R2 s6 L# }" A& e1 T3 T* X5 i! a
        CA(int ,int );: p  \- C" O3 Q, x
        ~CA();. c5 ]" O. }7 ~* w
        void print();
& D* W8 Y4 s: _5 {: e% Z8 w, ]: b' z8 r% A/ ~$ @% i( N( d1 t
private:
; E0 S( n. e% L# H        int i;
: R2 n7 x+ q( C. D        int j;6 F- T; p4 J7 F( a, d9 f
};9 ?+ p9 @3 T7 d: e/ e

+ t1 r, n+ z/ @" ~" p* c9 x+ _1 |CA::CA()* v* [- P; }4 H. x# U9 f
{: g$ s7 u3 V+ m8 ~/ E1 A5 y  o9 H
}
# m' ?3 Y. D, {( M3 e2 o; ^0 C, D! e. F$ h: m7 [
CA::CA(CA&one)9 v2 q7 T* Z7 C
{# E0 i! e% H. V" w# f. j
        cout<<"调用复制构造函数"<<endl;0 E! J, t) @9 |$ B
        this->i=one.i;6 `' K5 ?8 i  m! c6 y" A
        this->j=one.j;
' h; v7 A0 [# j% Y" z$ a( {( X}
7 Y4 M3 D. K1 f, ?2 `/ P0 F- I6 g) _- p0 S/ J0 f. c" N9 A9 E
CA::CA(int m,int n)4 X# a2 h: R, P7 e
{
$ A4 D0 P% S* z# e2 f7 p4 p' n        i=m;
8 P& x9 g( ]1 r+ t; }+ D6 M6 U. e        j=n;
/ Z  r9 h! c: C5 ]# c}
/ ~' W" A0 i9 d# k
  C* p; N: Y2 h$ x+ Avoid CA::print()
- T& ^' B( I6 A: ^{0 t, w8 V0 \7 C2 V
        cout<<i<<endl<<j<<endl;+ R) l4 E1 Q7 Z
}
. T; J2 d9 u) G9 I
) N5 N% D! M: K& n3 G. yCA::~CA(): }6 B0 B/ L, ?$ T
{. E- a% h# x3 G0 H/ K
}1 u: Q& a  p5 B7 F' I$ H3 H6 Q# Q

/ P6 m6 h: ?1 h: V#include <iostream>) ?: w0 u! B/ e2 E+ t. l& `" q
using namespace std;
0 k* e7 @! {$ L9 t#include "复制构造函数工作原理.h"
! B$ V3 h0 Q# t/ kint main(void){        
: v2 S; @" O: Y* {8 }. z+ q# Y8 SCA a(2,3);        
3 r; y) L0 X. C6 d- o- |+ c& N2 sa.print();         `* B6 d3 O5 R- \6 ?
CA b(a);        & D5 {5 {  k# ]1 O
b.print();
# V& {  o5 {  M7 E6 y       $ {9 C# ~  b9 [5 S7 `4 C4 q4 F2 p
return 0;
2 p# ?6 q; e# X* g}: z/ G& E. x, h3 D6 ?/ Y- z
) Z+ j$ m2 G9 Y! `& u3 N

/ O* x# ]# Z, T% @3 c0 d2 d( |: `7 I3 ?  c% |

. n& W9 S; z% h$ j
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
6 V% B; m# _2 t  f4 Y2 J- J% q2 T9 [1> 初始赋值时:CA b = a;- S0 X  z  Y, T$ X9 C
2> 按值传参时:void myfun(CA ca);
' V2 u+ N) A- h% e' {: ^3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层

( ?! r7 l+ ^) r' z- M第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-31 14:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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