鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 % w4 G$ E/ W, K3 J9 p

- j8 P% Z/ N' j5 [& Z# M, N5 ~class CA
9 D1 ~0 o: h4 [; L1 k0 Y/ t{
9 c2 h5 i  [  f. e" K# rpublic:
2 K/ U, P1 c; i9 q/ ]: {        CA();
3 X' g" j* G* t0 Z2 x        CA(CA&);
# D3 c: r; N; W& q        CA(int ,int );
! z" ^' E5 J  R! j1 d        ~CA();
- D1 m- ^0 W, j, v! A        void print();
: V0 k" D  ]+ ^: V6 W0 {! R, e* }
$ x$ S/ u! n; C% v+ ?private:
1 Z: F; O/ f5 ^( k0 L( q: j        int i;
; i3 }4 K& ^9 |) e3 ~) u        int j;
/ B7 N- O: P) E# j2 ^) z};
9 |5 u$ Z" V; ^3 u  U/ c# I' x% w" ]8 _' T
CA::CA()
9 S+ s; w/ E3 Z! m* Z{9 ^: O$ R2 A* _4 U* M# P
}7 u$ z2 s$ @6 h9 k( G
5 H9 }* Z6 s% V4 L0 Q
CA::CA(CA&one)
! R8 x3 V& a# k) e3 E+ h; l{% N+ G& B% V# }7 v2 V: F3 q2 d  Z
        cout<<"调用复制构造函数"<<endl;
) R8 B6 J& E) y% n        this->i=one.i;
' b+ V- O# g* ]        this->j=one.j;
/ i; l6 c  V$ m1 f" X4 r9 O& D}
# U+ t* x; \. C3 y4 W. ^1 P/ o6 J/ F! L, P% n
CA::CA(int m,int n)
: R! T: K) b  |{
+ t* ^4 ~# Z' _4 E) b! r        i=m;0 n8 s7 {2 W2 D, @2 ~+ |8 }) S
        j=n;( s0 d0 m: `6 k6 g
}
" s) H- J' g& ?* k( n
" r2 ?, D( `. J, w* \/ lvoid CA::print()
! m9 B2 r3 t) E! d, M4 O{
) ^' T5 B: z8 U9 b' G7 Z: j! V        cout<<i<<endl<<j<<endl;
8 f9 K" p! C. Z6 [}
. z9 g1 }9 ]6 S( W# s( K4 b. F
CA::~CA()
5 i/ |9 w: z/ _4 D/ z3 E& n{
, k' e' h0 p2 Y7 z# E}( z+ T" g, x  l- \

, Q+ ^0 @+ a7 d* P. J#include <iostream>/ Z7 s) U1 a2 V- P& M
using namespace std;* n' o/ }" z9 X; f  V9 P
#include "复制构造函数工作原理.h"( n7 v6 q6 r+ P! o' B( C
int main(void){        
9 e6 }* P' f$ |6 j' b5 pCA a(2,3);        
' R* _, y( Z" W+ qa.print();      
( l" M7 e0 x% H1 F2 r CA b(a);        
# h( U5 O! {8 m3 D. W! bb.print();- J; [$ D  e/ N( a: L  {7 L% b  u
       4 h8 a7 ^. @8 o: R' n8 P* c
return 0;( I8 J" b( b# ]: Z" ^
}
  W6 U! E9 n0 [) Q6 z9 [) V1 b  \$ g, |- G

* |* C4 v- v7 S' F0 b' O0 s
* _# N/ T4 f0 s9 G7 I1 X: P9 F& [8 u$ m
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:( D/ N! N8 o+ R. f
1> 初始赋值时:CA b = a;
1 v! Z0 S% O/ P: s2> 按值传参时:void myfun(CA ca);( i5 ]: K- i8 n, Y8 h  C
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 & O% m7 N3 P7 K( i* Z- j
复制构造函数在以下几种情况下调用:; _( ^0 Z" X* Z: z8 K
1> 初始赋值时:CA b = a;: [% u, L- f& V- A# |- m: ~  J- k
2> 按值传参时:void myfun(CA ca);

, J* l0 F! K# i, {# B( V第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-26 15:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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