鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
7 i+ P8 w" d9 K
8 i6 o3 `# Z9 o, ^" s2 Fclass CA  [! @! s8 Q7 l$ m- {
{
8 q( P2 S. l& z+ M& `. _) ypublic:0 P' i1 Y" v  p3 t; k
        CA();
& r) Q* {+ ~# L7 ?6 @4 R        CA(CA&);
, }" \! e( r( h/ k        CA(int ,int );" v" O! M5 y" [
        ~CA();( m0 L) ?. t3 g5 \, [8 n% ?; {# |
        void print();
4 Z8 ^; @8 I/ s% i7 l: I" g* i( _, l) O9 H
private:
$ E( `* X. H, Y+ l: d        int i;- c; o4 r" c( w" ~
        int j;+ ~2 p) f. }5 D9 `7 Q$ {( P
};
0 z" _4 m) |( I/ y
. w  y9 [/ q# ?! e: H  ECA::CA()
0 t8 W5 T: K) T# g! j4 ?3 d{
2 B4 ~% v2 I9 \! h7 D- `}( m, N0 j- i. e7 ^3 \0 ?7 ?

7 V& V/ D: V3 w+ }/ hCA::CA(CA&one)
: {" j+ P6 @' y+ _# [{# u, F& N; C& G( t, d
        cout<<"调用复制构造函数"<<endl;
. d; Z; F7 s4 g        this->i=one.i;
' A) G5 p* {; S* x1 t        this->j=one.j;
$ u! l1 h* r1 S# L}% p" Y+ n$ g' y( c" A1 S
4 c5 f0 u9 o8 b% |% u1 c8 l* F
CA::CA(int m,int n)7 ?1 y* V% _9 d, `
{
8 Q+ ?: o, B# G3 M        i=m;  B& z. D/ t" R
        j=n;$ m* e, X9 M2 Y0 }* I* i
}0 q0 x& q+ F, H8 k- J3 S
5 V3 n' W; _' A. m  ]! A+ p4 F
void CA::print()$ ^7 ]1 A2 |4 Y) J
{
& _. m* X% Y9 u- l" H  s        cout<<i<<endl<<j<<endl;
! D" U8 f' D+ Q}* S  m; Y' y$ ]( q) w

, @& h" r; a  z4 ]4 NCA::~CA()4 b- V2 T; F$ D+ G* L  Y! I( L
{
9 q- }- u' S5 n) E7 T9 F}
3 d- u4 F. C' C% g
& J0 n. n% M/ U7 n# u4 Z+ v#include <iostream>5 W  z4 Y* ^$ c  K9 G
using namespace std;, P6 ^% h) p9 x- P2 {8 F
#include "复制构造函数工作原理.h"
4 k" |, Q6 k7 K! x9 Fint main(void){        3 O0 {# n7 M% @$ Q
CA a(2,3);        
; q5 |& F, f: Xa.print();       6 R: P8 X' A& |0 {- S: }8 y  E) n
CA b(a);        
! B  o6 m: e; M1 Sb.print();+ s% i/ y7 Q) B8 X
       5 f5 l% f" m$ c) M4 n
return 0;
) ^. ?9 q+ }9 W/ N6 K5 h7 ?}, j" c. P# {! k

2 @/ c# o2 r1 C
  K* ~6 L  O3 s& p
& A; z: K7 R* |/ z: N. o7 v: q# }" p! u4 K
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:' M$ L0 v" K4 S
1> 初始赋值时:CA b = a;% P" f  j+ _( h; v7 E+ \
2> 按值传参时:void myfun(CA ca);
2 b" g2 v9 A/ M5 s- K2 W* {3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
0 d- k. i$ N: E( W; F( ^$ c8 W复制构造函数在以下几种情况下调用:
7 W, u. Q1 ~( q# s1 P' [1> 初始赋值时:CA b = a;% l  y7 Y/ K9 j
2> 按值传参时:void myfun(CA ca);

9 r' @2 c! A0 S- Q# E( o& ^" K第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-22 00:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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