鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 7 s& W& X0 d0 X2 B4 H% _5 O% d. P" u
' v( M1 }, o! G/ f9 b9 w5 L
class CA
) f% E0 H+ K7 r, K{$ s. K8 a+ N4 h/ d$ o
public:: u( m% v  O. _! T  f
        CA();
/ s) U2 v' V: R0 {        CA(CA&);
) d1 g- Q( N* ?+ @5 D& @0 Z        CA(int ,int );
% s% \8 @( N3 r% W/ O) H        ~CA();" t5 Y, P5 P: |! J! Z, t$ S$ p
        void print();
, W5 E) I9 j4 s' o6 S- Z8 F2 Q/ B  F. u& }, M) J
private:! L3 o6 \3 v6 e1 ^0 i) ]0 y+ B( e
        int i;* T) V5 E+ Z- s" ~8 w0 P" Y4 D
        int j;' }: M8 l" D. X8 I7 U
};
5 {0 N1 J6 D! c4 l- _) K  T* Q- G7 x9 J
5 R% T: ?3 U. q& @+ lCA::CA()
# X+ v# w6 x, V1 G( x( J4 z- }{
/ B, [/ P% m$ Q1 @0 m' f3 \- {}$ p4 }% r0 A. b6 x, T
' n# J5 j. Z/ |0 c1 k& e
CA::CA(CA&one)
+ T* \& C4 c$ a9 d$ g5 {{, j7 H! W4 y$ ^/ V- ?& }  y9 m
        cout<<"调用复制构造函数"<<endl;
) h7 [2 g$ L% b# W( W1 |0 _        this->i=one.i;
. `9 F. J* B9 W  S        this->j=one.j;
% A2 b4 [4 L; {}+ @% o$ g5 {: p. b0 J. P
5 v0 J% ?  I, r/ V
CA::CA(int m,int n): @5 H3 l& A7 r! n5 r& g
{
# ^( @6 p4 E* z2 `& g& V) W        i=m;
7 v4 s  `4 J) w7 o  c# h        j=n;
. h/ i! ^% S" Y6 s* E* I6 N}2 s& A" a% K7 D7 F( x! |& G0 M

* o0 M5 D# k  G; ]- k9 }void CA::print()1 |: M6 d* p: ?$ a
{
  }6 q% E7 H0 F/ K( I        cout<<i<<endl<<j<<endl;" ^  _3 c2 f) B, D0 ~" S
}
/ t9 c' p; J$ P3 V' O* ?& v3 @" q& ~0 X  }" L# y
CA::~CA()
7 s% p* t9 }% F{
0 _  O% h7 Q1 g}/ s0 x0 f( F: [8 H$ o5 m4 ~

! `; P3 q+ e$ k+ a#include <iostream>
8 M( X' L: m9 h! x4 V" v/ Tusing namespace std;' d. p0 h" S3 x7 y2 c% Y
#include "复制构造函数工作原理.h"- ^8 g  |: [, q. T, _
int main(void){        
+ g( _6 E+ z2 N0 {' SCA a(2,3);        
) t* C: u7 d8 |! qa.print();      
3 F, U: ~$ W) n! J% ?) J CA b(a);        9 |6 U% }6 C7 A- z
b.print();
, O6 H- Y( R( C3 G! W" c       ' t! ?. b/ L. M0 @: C
return 0;) O' v9 S- f* _0 u9 e- ]& _! A" Y
}
. Y4 D* U5 L0 Y; T: Q+ Y
/ t) y6 F" c1 z5 ]0 B2 o, d8 |: {6 P: q

3 u, H7 m' x# X9 C5 q9 d: C
# c$ [; f8 |& @3 \& ~
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
3 \9 m$ V. A  Y6 Z  Z/ M1> 初始赋值时:CA b = a;5 F% p4 g* g- I
2> 按值传参时:void myfun(CA ca);
5 l% w( M& C5 {: l3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 6 ^/ `% }. N0 k1 i% ~2 {
复制构造函数在以下几种情况下调用:4 V$ P7 ~& {  v; K/ k2 G, z  ~
1> 初始赋值时:CA b = a;, F1 m9 T5 q6 B+ W% O; X& V+ u
2> 按值传参时:void myfun(CA ca);
2 b0 K9 |, P1 \: B6 o# Z; K" ?
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-14 14:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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