鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
. x1 n3 u) w$ m" k/ M/ N& V" K2 H, u4 l# ^# H
class CA
8 o5 A5 X7 d( t- ~1 B( w% a{5 a% J* w; L8 Y: ]7 l5 u/ b3 c
public:
% S( W% K( n! C9 p) `( w. M6 X        CA();
2 l7 m( y% }* E. f5 @0 V        CA(CA&);
1 k4 Y, A3 E& y        CA(int ,int );; n+ j' j/ d) F
        ~CA();
! B* a, O6 L& z4 f" A# m" t        void print();2 w+ i8 W1 r) I; N
! i5 z: j# D( }4 M  p
private:
! M/ b2 V8 W2 p4 a" c; B3 `  U        int i;
& G/ a( ^7 @7 o. x& V) p+ `        int j;
; C2 J2 u2 Q- d3 F) l: \& F" D};7 v3 @2 |8 l# z+ Y1 [
) x: V. T  @, s$ |: j) W
CA::CA()1 U( o( o# W( T4 L0 G+ E, S
{
" B) ~% b; {& Q4 R$ W! K1 ^; w}* [) T" d2 w0 M+ a8 b- I' }) c

& b0 w! h  K! f3 r6 x0 S4 b  QCA::CA(CA&one)
& ]8 Q8 g3 b( B6 u: X9 g{4 b; D" x7 z+ `
        cout<<"调用复制构造函数"<<endl;
' z# J) p0 b( q' z: k0 K0 O9 T+ l        this->i=one.i;1 d/ Y1 f* h( D5 K
        this->j=one.j;7 A  c  q  t4 A8 h+ ]
}2 L1 o5 ?/ u3 e3 Q! J

4 }& Z9 S& T$ Q+ g5 u! m5 hCA::CA(int m,int n)
" B% C7 C% T+ R7 K  d# K9 h( u{) L* d9 T0 M7 V) a# V
        i=m;( `4 l4 w$ d  W. L# G
        j=n;" o3 \1 C* |( u( e  f9 z3 x6 \
}
& P, P! Z" p& u2 v6 ]: M9 ~+ j4 Z1 c
void CA::print()
& T$ |% k% R9 u8 s. f6 d& A{' I1 P; p  A5 q* S
        cout<<i<<endl<<j<<endl;
9 J' L; h. P+ f}
& q0 o1 k0 D/ U. L9 t
2 F5 x9 P$ ?: e/ W7 P1 Z$ wCA::~CA()
' v; p8 T3 s7 G8 |! R{
; n) q+ J, x, D/ Q) t* g}
/ o- h4 G: W- [& v8 b# Y7 C2 s% V. N4 v2 ~, B* O" \  _
#include <iostream>( b0 O4 N# X$ N
using namespace std;! m- i) w" W9 R9 |, A
#include "复制构造函数工作原理.h"% r7 l9 d9 j3 f
int main(void){        
  S1 B, q3 R" P5 C  Q2 v' [! vCA a(2,3);        
* F/ l/ ^6 ]2 t' `a.print();       * u- p* ^4 A- Q& |* m* t" j
CA b(a);        
  \) Y1 N& b" n2 M" I9 G9 `b.print();
) n* h( s6 L$ P: D! G      
' F; f* M( [" I, t  G! w% E% d# k return 0;( Q  n3 u9 ?( }' Y# {
}9 n& P( G( Y: ?) o7 `
5 f. A1 Q8 m' ^! O

6 v- t/ ]6 |( E! G; T5 o& T9 p% Z1 t+ W# N7 W, Y: ~+ P
5 Z* T: {6 U# D5 k0 D5 N$ r
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
% U- U: c1 l6 q- m( O1> 初始赋值时:CA b = a;+ i. }2 X4 @+ S' O# G
2> 按值传参时:void myfun(CA ca);
: I4 q" ^5 b0 |# R# t3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
3 h8 x% G9 h: G% ]% V2 S9 f8 w复制构造函数在以下几种情况下调用:
( u( V: A" c( ]. c- a1> 初始赋值时:CA b = a;7 b7 _( c4 Z. t) w- @
2> 按值传参时:void myfun(CA ca);
/ g8 |9 }3 e+ [% T5 S
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-9-20 21:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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