鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 : |% Q' Y7 m9 A+ ?

" e6 \. p. W9 s1 o% ?class CA
$ N3 E- J. P4 i{
/ E4 ^0 M4 F1 b. Xpublic:/ ^+ Y& g6 y7 d! |' V. P1 y4 y4 L$ @
        CA();: {/ i$ J2 E, q9 |# g
        CA(CA&);
1 t0 V1 M& ^* T, c6 U" g        CA(int ,int );
$ X) t2 Y8 }9 a& @5 i        ~CA();
/ A' v+ M  C8 t7 y; n" b        void print();
3 ^/ c, x! s* T4 Y' S) o6 m5 u% z! d+ m4 g5 T( K; Q$ l
private:
2 n! [3 c7 W) j9 o; Q; T0 {* y        int i;
0 Z6 t3 s8 h0 g3 r9 ~& D        int j;
3 H* f  P$ p% p3 P. D4 X};
% @7 Y9 \& w3 e
4 W3 D. X( ~& z2 t8 B* pCA::CA()( t' ]% @( C9 A, G# e
{
: H* K; I1 s3 G/ V}
9 h4 P7 S0 @' O2 J% ~0 N$ M
! _$ T+ m' b/ ?/ {CA::CA(CA&one)
* Y/ ~" y! |: `2 f) a; x{
. Y: H2 G+ y% p2 h        cout<<"调用复制构造函数"<<endl;2 B: [, P4 A5 H4 v( ?
        this->i=one.i;" m; j1 _  Q  w2 W) O9 C
        this->j=one.j;/ [( x/ h' W6 U$ A6 `' J& \7 u5 L
}! N" O6 `1 b  O' Y8 ^( O4 }
0 Q) L4 m/ |9 `" m; {* ~
CA::CA(int m,int n)
' b! `$ n2 a; A{
7 ~$ W1 L9 G1 p3 o6 P        i=m;
: j4 N) t- j6 k% u6 b1 [        j=n;9 D0 f) x$ Z" G& ^* M; g" E
}3 _4 u. A' ^+ I
# h2 q& e' X% e+ V' n1 y# M9 q
void CA::print()
8 S3 o- C, d# V/ }' U7 t( x& ^6 c{
! {( e, A3 B1 z1 V. ?3 E5 B        cout<<i<<endl<<j<<endl;9 b- r9 _' f8 I
}
+ }! S7 V: E5 ?& ?9 a% Y' T7 p& Q& R& S3 b# X) T+ q% l# }+ s6 W6 Z- W
CA::~CA()- V9 i0 h; |  i) S( A* y" J, k
{
$ I, v; e: W5 ^: r' d}
. l, g* A- M4 c7 U# W2 |. i4 E& `0 r. O  i" h( Y" g( P& H
#include <iostream>
) B9 x4 z. M$ N. L: H9 d" Rusing namespace std;
& b! ?, l* f; b4 m. w* B#include "复制构造函数工作原理.h"7 h9 t' O( W7 I4 f, s
int main(void){        
6 k/ j0 K  l  p3 w0 wCA a(2,3);        
4 {: g( v. v: B9 h# g6 ~a.print();      
) ]( O5 A+ d8 Z2 i CA b(a);        
. V# m& l7 X: {  a# lb.print();0 t( w# G1 g3 J" U7 z
       . u4 ], ^+ J+ }
return 0;% m; c8 r0 _0 [8 ?
}
& h' b) Q8 R- B3 R! c
0 W, H: A; m0 g! z1 {5 h4 l6 {1 E2 a& o
7 j" I7 x. K; k" k! K+ p6 ]

2 M+ C# q: h1 S8 q
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:1 |9 m# z' Z7 @5 C3 G) L& j) h3 M
1> 初始赋值时:CA b = a;6 x" X9 s' t( A" _/ W
2> 按值传参时:void myfun(CA ca);
7 F5 a5 H/ R9 w4 M! I. d' d6 W3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
! [* k0 a! A$ J3 L6 S' b复制构造函数在以下几种情况下调用:4 W! _# D+ u! `5 j4 z# j
1> 初始赋值时:CA b = a;7 X/ ?4 ]  A5 P+ T: j4 _
2> 按值传参时:void myfun(CA ca);
+ A2 `- `, n3 \/ g  i& y' J
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-7-12 13:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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