鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 - \! w1 m6 T) H, h
* u! S2 C& b, p& R7 [
class CA) _5 \& N% L& {
{3 `: }- D! R% {. ?6 m
public:
; F7 q  ?+ F: l; N, `        CA();
3 [7 b- ], d$ `" |+ I! _        CA(CA&);
2 s! W, W6 X3 w3 x2 h        CA(int ,int );2 d. ?8 w" x' o& v2 X
        ~CA();
6 X( C0 ^! ]; [6 `2 _& J        void print();
$ G4 s- F: m9 z% M( Z: O
; p' O! Y/ @8 N; j9 M% G; b- R3 {private:
4 I; G- t0 R0 }; F) @3 r6 T7 s% N3 M        int i;
+ g  H( }" |: I0 Y" \0 M        int j;
. w, g$ ~2 g" M- i};
; K" a$ b7 \6 v% }" I5 l, J& k& o6 i7 c- I# H( A0 Y
CA::CA()) n+ e. d$ t7 `9 L
{7 i1 x6 ]$ |6 `/ t" h
}
& n, V! z3 i# N) r0 n
3 k9 ~" M- J& N$ j5 b3 d6 bCA::CA(CA&one)5 v7 h/ `6 t# m  q& m0 L5 d4 {% R! K7 s
{
1 E, [6 `/ Q/ o        cout<<"调用复制构造函数"<<endl;
3 h$ G9 i; q! K6 q7 w, b) s        this->i=one.i;$ w3 p% m9 z& X6 K# J: Z
        this->j=one.j;
. [9 o- p# o1 J9 v+ E  Y. m* n}1 X: Z  [  T6 p1 H0 j
0 N6 f" c# D' ~3 G, X3 ^5 k
CA::CA(int m,int n)0 M1 W  d# k$ x5 [2 _" X( ^
{- {( W+ i+ Q5 c/ N( N
        i=m;
6 ^; ^4 X: h8 y7 U* o' |9 s        j=n;
7 ~; l' `$ R0 n# d/ R) Y7 E}
9 Y+ }4 E, u% ?& _2 ~% L9 \2 ~; G( z& b& ]1 o6 p
void CA::print()
5 L7 J2 o+ a7 h- G9 J9 I; u{5 D' [+ X, S8 @; }7 [5 p' d
        cout<<i<<endl<<j<<endl;+ q( O# |" T' p7 l4 e& V# U
}1 I- H# I/ c5 ?7 m. W1 U( H

  f1 _6 p7 P" l, M. W+ zCA::~CA()- S: h5 v2 W1 x$ Q+ t+ A6 ~
{
& C+ \5 I( _. i1 c( `}2 @' T) ^7 H% s" }9 u. X: G
1 x; E1 v& b0 g1 J! i( z  v2 j
#include <iostream>
; r) ~4 H; M/ n( J- b4 }" K. f! M- Eusing namespace std;
4 u4 v) _/ F2 `1 G3 \#include "复制构造函数工作原理.h"
3 I  [9 z: k6 Z" x! Iint main(void){        + \- C% K2 W7 ^4 Q
CA a(2,3);        & g/ c: w( P2 P. T+ l* W
a.print();      
0 _' s/ ~/ P& V! f) o. N CA b(a);        
3 ~8 f0 ?% F0 U- v; wb.print();' T5 {: a+ ]6 ?/ y
       0 h+ O  t0 v3 |2 w
return 0;
% h2 p; X' Z0 ?% ^) \& x; F- s}
% e$ n- R  c6 L# j
- D2 z  N0 f9 S& g* E) p
/ s  _6 C$ ]( p* T$ j) ?
% i% w' L2 @/ o( _, k# H
4 u, {. D" Y$ b/ s' H. l7 {
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
% M' K: [# G; q1> 初始赋值时:CA b = a;
" x8 n5 [8 D* k- l5 _- z# \2> 按值传参时:void myfun(CA ca);
; y+ f+ a% n- Y3 _  ~0 Y" G3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ! v, j$ U& |% i2 Y) w
复制构造函数在以下几种情况下调用:$ N. [1 U0 q- A: R0 m5 O) ]
1> 初始赋值时:CA b = a;
% \3 ~4 T0 J3 v: n2> 按值传参时:void myfun(CA ca);
7 y0 h, d) J% O  F% t7 y# p
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-5 06:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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