鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
. \( `' v+ t2 @8 M/ e
3 r0 e( m+ d/ r4 ~) @: Mclass CA* f1 _. ^$ T2 l: T4 W6 B
{
/ Y& j% }# h' N0 b+ v# zpublic:2 N: @! p. d5 u/ |0 Q
        CA();
( @" W1 O% M) O2 v: W+ Z4 r) \        CA(CA&);
; V, F7 [: i& y( J+ c  I        CA(int ,int );
, T$ n5 |1 Y# o* a& M        ~CA();
' C$ C0 ]8 c+ \; q        void print();
9 Y1 }7 l9 _3 r0 `4 M# Q' W# ~
7 d% O: J/ D! J- ~6 p1 |& Yprivate:
# e3 i7 [3 n% l% J+ B, Q, }, i) [        int i;  K" F- |# }4 `& ?9 `' @
        int j;+ ?4 i" q3 a# W6 N3 v" d
};% ~$ w. H! t( E9 g. m  u

2 j9 M. K  k  p0 M) DCA::CA()7 W5 x% O! \; `8 h/ ~( N
{. {( C  G" x0 X  \, @
}
: }' J1 d, I. f+ ~2 z1 w
& \" b( p$ ]: `9 vCA::CA(CA&one)
1 w9 u9 q' W5 m/ e- L{
; j0 v* C7 Y! z1 \# G        cout<<"调用复制构造函数"<<endl;* e/ J7 }3 j! |8 W) l$ K: L6 x
        this->i=one.i;
! N2 O& _5 ^2 s* F" c1 T        this->j=one.j;
5 L( n$ s# ], r2 Y1 [}
, C9 [5 ^: J3 E' m, Q% {) H' p7 h, B2 s- I; [
CA::CA(int m,int n)1 p3 i4 b- V: G4 K8 g6 L
{. |6 B+ C, P' V9 v8 j7 G6 g) Z
        i=m;: g- K% t' O5 ^) d4 V) d9 o( L) y
        j=n;
+ K" ?# {/ a/ |+ @* s2 h}# `! h- S+ n, o# k9 y

1 r- Q- K2 r* I8 q0 ]void CA::print()
' K2 A  y% d* s& S! O: g{; g9 b1 t- [  |. G0 b& b. e3 X6 }
        cout<<i<<endl<<j<<endl;& T' g' z+ G8 L2 F
}4 P! l* \! c$ G- s, B# t. A

+ C% f# o* G5 S3 Y+ `" k. ~  X- QCA::~CA()- ^$ F* d5 e) S) _  e7 @2 o
{3 n0 B2 ]" ]9 D$ X4 z
}% [7 J4 C- K3 o$ ]. l/ c
) f; i; Y4 j: g" P
#include <iostream>2 B7 P9 |9 X% X' S1 K
using namespace std;
3 J$ O2 _. l  ^; x#include "复制构造函数工作原理.h"; c4 T4 N+ n7 u% P5 X7 V& b/ g
int main(void){        
! w) t+ j6 Q! ]3 Q9 \2 sCA a(2,3);        5 c0 z7 e$ ]* X  t# g  h
a.print();      
) X; q6 @" ~% [8 H/ W" s, b* @! e! E CA b(a);        
2 P  B2 W% D# |1 a9 L( Y) Ab.print();6 }0 g2 t; K6 X" h1 d* y
      
- J- Q9 p) Q4 {+ y( Q0 Q9 ] return 0;
2 o! }9 y% j# E3 O8 W" h% x}
* C: M3 I: X& ^4 W/ ~& Y! ?
4 ^/ ^+ m& t! c0 F+ o7 P. {# k0 Y2 }$ F3 l/ H
5 z# W! E8 ^0 g: S0 X. o
' T# g3 R6 e/ i
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
6 O0 r2 z" O* Y1> 初始赋值时:CA b = a;- ^" A3 G5 o, T5 S8 u+ j) c
2> 按值传参时:void myfun(CA ca);9 h+ I  k- e- K8 W4 A
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
% q5 l1 @4 z- Y7 g+ |复制构造函数在以下几种情况下调用:+ d+ l; N5 s! x1 w
1> 初始赋值时:CA b = a;2 s& A' W" E* {, s8 z- m% n4 P$ d
2> 按值传参时:void myfun(CA ca);

3 J$ B5 ~, P1 ?7 H第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-19 14:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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