鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
$ w' |' A. ?- B% b7 }% J  [& n4 z9 a3 `3 G# U
class CA" A) q3 G2 t: p6 G1 ?" y3 ?
{6 T4 @  u3 S1 V1 |
public:3 r2 y6 \5 ]% f+ T& R5 j. J
        CA();- Z' X, b$ C# i9 v
        CA(CA&);
/ d3 l% T) v9 o8 {" X        CA(int ,int );1 F. J& @1 B, L- I% |: k
        ~CA();& y2 r& r3 ~! o' H; z" O
        void print();
' H) F: A  H7 l/ c1 V4 B
, L6 E& @! s; W7 iprivate:
: F7 k  {( g& ?9 X/ t. Y# S        int i;3 P  i' z: \, L) t7 L% d" d' j, w
        int j;
' ~- H" R" Z3 n' b};; j( V) H4 y# T, u, ~* v! }

) [* N5 |& j% u7 M" i- r5 C2 FCA::CA()
; v3 W" r5 H+ t  Z9 P0 t{
& V" R8 B: ^; M/ @+ a9 q! ^}( s' J! ~5 e' A* U7 ~3 x

& k7 v8 G8 I# ACA::CA(CA&one)( r0 G4 ~8 x8 @& C! C
{5 g" A9 {2 g+ Y( R$ d' B# Y- {4 Y% s
        cout<<"调用复制构造函数"<<endl;! C3 Y9 n" Z) E5 j
        this->i=one.i;
9 u, T4 X: C* r        this->j=one.j;
# D. U1 \' m) w* I* m}
' |- Z. d: B1 o6 s2 {% J
2 R6 \0 X- M, h; \1 ACA::CA(int m,int n)3 a) ]& q! T- e( l% k' j
{
5 f5 [6 G  M1 z1 p  _        i=m;
& _  x# v' N" i' u' m5 ^3 _, l        j=n;
7 Q3 [7 J5 ]  i& k$ a9 n7 N}: l0 D5 J. ?7 L- Y
8 k# C2 \% l3 l3 t) ]  z
void CA::print()8 A# P5 J! O1 ?0 I# l
{
( n! S. i9 f/ d+ k; S: F        cout<<i<<endl<<j<<endl;! ]  g0 h/ `; {8 E. I+ U" K
}
- {$ l/ g& L3 M! G- b. l
- [8 I7 j" o  d1 dCA::~CA()3 w# x! S4 C$ T/ L2 }* q. p
{+ ]% h# \( L9 c
}
8 w% ]/ p& I. p5 C# o" D1 j( z0 k. c) V3 Y
#include <iostream>- p% b# i5 I: i8 v$ e! ^2 h
using namespace std;
. Q8 t' }$ `: z7 W" i4 W#include "复制构造函数工作原理.h"
* z" }4 F! o2 C% W0 _( mint main(void){        
& L" z' s- V# ~4 c6 Y5 nCA a(2,3);        
) O0 O% U: j0 z( ia.print();      
6 X" ~7 f5 F1 Z5 H$ |8 i/ W0 r CA b(a);        
' S; i6 L, J/ ?( [9 S* Q3 }b.print();. ~3 n- ~* p& m: B* m' W3 S
      
! d+ \# s; _, H* B. I& R5 e  D, L7 p5 c return 0;" k5 o  B# {3 Z! h
}
6 A0 l/ F& V, |$ B
" V' R5 |: |" @2 p9 W' S. ~5 K6 q' p9 h) \. ^) T$ ]

" K8 O9 U8 s  D0 j
+ i. y% \, \6 f4 \0 y" k
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:; F. D9 V6 @' m7 O  }  Q$ l, i
1> 初始赋值时:CA b = a;
5 s6 Y- n$ u/ R/ T, l) B2> 按值传参时:void myfun(CA ca);: O6 ~' R8 Y5 p' Y
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
/ c7 G2 D: F3 m  M# z2 P8 R复制构造函数在以下几种情况下调用:
' T) d1 z6 k! q6 c1> 初始赋值时:CA b = a;2 S6 i9 i" g9 U+ E2 h$ g7 o- f- g
2> 按值传参时:void myfun(CA ca);

2 I& `9 G- X" k' w, C  }第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-12-26 08:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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