鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
4 }0 I" {2 q# o, n4 o/ L3 {; s2 t( `, Y* `' Y* N' O
class CA
/ o# d3 z( E6 L. G2 a- `2 v{
( ~5 l' G# Z2 X% F6 O  i7 Qpublic:% P- X/ T0 E2 W( M, x3 [& |% a- i
        CA();+ r2 Y' M* ]! {0 W# k3 w9 C' \
        CA(CA&);
3 K! }( M% ]. ]+ t. Q/ ?1 @        CA(int ,int );5 M3 [% ~. }9 j+ u5 }# p+ `( d5 f. r
        ~CA();8 `- v* N1 d$ f
        void print();0 x7 ], ^' G, z/ |

8 l1 C4 X. n$ }$ K; \% \private:1 l) j0 v8 G8 U8 y9 v
        int i;
$ @8 p' k2 V. D+ h        int j;
+ S9 b6 E' u  B5 r* \6 P: ]6 O8 H};
6 J- Y6 f* d" h$ p/ _9 D" `5 g- M! p* }) [. y4 m/ L
CA::CA()
& g+ ]4 _% O+ l% O, h0 B{/ g8 n: q; m! [. d
}% ^7 S. s/ T: U9 r* u
: j& \- Y6 F+ H0 o& \8 E  C+ E1 Y! w
CA::CA(CA&one)
# C4 ]7 V) d2 \{, E1 j7 R- b" E# j; _6 }& I, m" j# O  f
        cout<<"调用复制构造函数"<<endl;& c: T  `9 P6 g& N5 k+ U
        this->i=one.i;: B2 L1 p3 x( T/ \2 Z
        this->j=one.j;
/ }% L0 \2 |+ f) S) h( O}+ n" ^* p6 K& C1 n- w, n/ ~
+ P  ?6 t4 t& P5 ]8 f9 g
CA::CA(int m,int n)
) U/ v- @$ g- H{% N5 K/ y- ^* {
        i=m;
2 l# ], C! W' l( w& K; X/ n        j=n;7 d9 E8 i9 A( W' }- B. W/ s9 Z
}3 L+ a- l+ d! [) L1 M# q9 C9 o

. K$ T3 d; `1 d+ \* t! H/ \void CA::print()
8 f6 e$ R" A+ N- [* I" T0 h( T{
- b  v% [1 p4 ~+ J$ u! N8 b        cout<<i<<endl<<j<<endl;9 D( z% p' k8 A
}
, Z$ [5 h8 t5 J' L$ G+ _3 P- F/ y! n  u& z
CA::~CA()
; e4 E% M! b8 h% s{
/ j3 ]4 c$ O- D% T* J5 Y$ W}  E2 I% I# |4 o" X( Y, y# i; P9 \
* G/ `7 z$ Y; `- C. Q' q, d; B% v
#include <iostream>
. N8 S, X3 I+ |* ~; j1 iusing namespace std;: w  x: G. }0 f/ I2 ]
#include "复制构造函数工作原理.h"% I; O9 \+ F, ~. y2 j, l
int main(void){        
+ `1 T. |  e: H; k  t; oCA a(2,3);        
; m1 G7 H+ o4 O) R, _, w, N7 ]a.print();      
) X+ O0 {" q" a& j$ ~% D- {; e7 J CA b(a);        " ~; x2 r6 K9 c$ v: f( O- A; n
b.print();2 I' B4 _, c1 t1 M0 t( f
      
0 K, `) _# m6 l" J7 f4 z return 0;
% f9 A2 {8 b* A2 Y4 L1 v! w; z( l: Q}! {6 g/ }5 |5 r( ?
" z5 H2 }1 B$ H9 f

( p( R+ ~7 ~- R1 r
' K% t# H+ k- w1 f  v2 Z0 p; V
4 r7 n9 h! v0 U* K. s3 {
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
* j4 F8 S$ o# t; O9 C0 G( h0 S1> 初始赋值时:CA b = a;8 N# F9 x/ k* _) ?) U0 i( ^2 X. ]# o
2> 按值传参时:void myfun(CA ca);; |/ t: L6 z" ^5 i, r  G
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
2 J6 o6 j4 @* ]9 ~! ^3 p9 i+ s复制构造函数在以下几种情况下调用:2 D2 r) S" R% j/ N
1> 初始赋值时:CA b = a;3 X' I2 m% M) Y& O* c# {% W
2> 按值传参时:void myfun(CA ca);

6 [; B5 U. M+ s( M' j- h/ P第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-5 11:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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