鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
6 F5 C0 f1 h2 i9 ]: r# ]  ]  V# z& R/ B9 v. A  z2 P
class CA
6 H2 V. t) Q4 S( R& u{, |' z% ?' Z3 M$ e1 J/ {
public:
% A1 `0 I$ H' `* ]' w        CA();7 ]: W1 u+ a7 ~* [/ x6 q
        CA(CA&);0 `4 d& `: S" v
        CA(int ,int );2 o' X5 C2 _/ |6 `, `
        ~CA();! ]3 l. p. T" u: D" p* I: G. D
        void print();
- V; ^7 k" U* x5 Q0 z- D$ k' l$ @2 a5 E3 `& h
private:1 s/ {% }  E! Z$ f! D
        int i;) d! Q! s7 o' a7 F! F8 f2 V  z% p
        int j;
" ?& ~, e. u1 n8 k) n9 e4 y8 u};( x3 {, X" \/ V4 Y1 u+ h
( w' A5 Z; N% g2 }9 F8 |6 ?, N4 O0 r
CA::CA()
5 x- c# c6 b' N" _. m, M{
; \  r* e2 B# U- j* `8 D}  t2 O+ w' Q+ l2 T/ r

; Z! n8 r# m& [3 T' g  QCA::CA(CA&one)
! _' `* x2 L- M) h6 M# C& q{( @8 v- T/ l8 F) O- H& {: o3 Z$ p" d
        cout<<"调用复制构造函数"<<endl;
+ k7 G& E, X& y, Z1 G) l" z7 Z        this->i=one.i;' M% N. Y! J# ~
        this->j=one.j;
8 Z/ \; C- x' T, u0 n1 X) P- q}1 E; R' r2 a) j# T, g: Z  r- R! j" ]

9 r( r/ a3 a# m4 r: HCA::CA(int m,int n)
6 P1 X3 _) z( N5 [- s. X1 {{: I/ v' q  z0 M# P* F- W7 G+ m5 I
        i=m;9 q$ \- k8 y. _9 l# g" ?3 Q( z
        j=n;
3 d) u; u) j4 {2 j- `}! x$ f. e2 m- Y# I

* J; L5 I4 K1 s, zvoid CA::print()
* B3 |+ Q8 p* b+ S{
" |7 E0 b4 c% [) T        cout<<i<<endl<<j<<endl;
/ ~# A+ I! H: _}
5 w8 [8 F  E3 o! d8 c' F% F6 l) u( L6 i) L( V5 {1 Q8 ~9 U
CA::~CA()4 @5 M8 n4 ~' u  k0 Z% @# P- ~
{1 d2 m3 l6 m3 [9 C
}
- M' p3 q) P. j1 }" c8 J; Q4 W& R: `+ y, Q+ Y
#include <iostream>6 {- m4 _/ b, b9 b7 b- E% m& f
using namespace std;' `4 Y! F# Q! f0 D) ]6 u
#include "复制构造函数工作原理.h"
" ^- j" ]" f* {- Fint main(void){        2 ^% P& V; k' u" @
CA a(2,3);        
8 r: l  Y! r/ x' ~a.print();       & t6 w2 s7 U8 w$ m; F1 U
CA b(a);        
* M/ I! T; `3 d" vb.print();
. |; `/ R& x+ I( w3 z  T( \' g       . c+ h7 z+ ^1 X
return 0;
8 Y! K9 v0 l4 x9 }! f7 s}
+ \. V2 l0 F5 ~8 F4 d8 s3 ]5 R$ T6 b# l* \* `" F; W# h- K

  ?) a# V) Z9 a+ f3 v" a- c* p9 y' O- j  i
2 I# @; H0 H4 ?0 G) Q
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:) H- P9 E( l" t  \- l0 E0 J
1> 初始赋值时:CA b = a;% A7 a9 }. U9 B! g) Q! g
2> 按值传参时:void myfun(CA ca);7 x6 s; W' v3 k' f2 Z
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 0 e  p& L6 p* n0 `" H- \/ `
复制构造函数在以下几种情况下调用:- P  n0 s: L0 Q
1> 初始赋值时:CA b = a;
8 j7 V; N, }) y- d- F" f6 y* o# Q2> 按值传参时:void myfun(CA ca);

  K/ V/ D' L' Q" \( a8 E第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-12 18:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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