鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
3 I1 a& E" a2 A( \: v) f' E- I9 ~& ^' N; Q8 t
class CA
8 Y/ I/ T" ~. N4 n  y{7 o7 f% p2 O: \, |
public:  m6 }) _1 X6 ~
        CA();( h! \* o2 E1 I* R& R# S
        CA(CA&);
0 |) B  P3 e9 c" v# q        CA(int ,int );
0 k$ G8 U1 D) h        ~CA();) [0 T" i2 @+ t( G& u  ]
        void print();
- J7 h/ O* r4 s% z& L# M4 i9 k& `7 p/ ]" e6 Q' \
private:8 s9 r, g/ J1 A7 v+ T5 {: f+ c% {
        int i;  l& [% Q  n/ h$ h% N) n: ~( k
        int j;
% ^; Q' f& k) z( x};
# ^, e2 Y9 Z% O' G( X( A( l
+ ?% ]+ Q4 d. i8 G" OCA::CA()' B& k% E3 F9 y$ B0 `/ L
{
$ E9 o+ [$ J# U}/ P! i! R0 B  j' g% Z  G% s$ \9 V
- M* k* e1 F- U* j0 ~
CA::CA(CA&one)
: ?+ @% \) C0 f1 }; x" x{
3 c" p" K& o# [' O        cout<<"调用复制构造函数"<<endl;
6 c5 X( c. z- S        this->i=one.i;2 S2 v2 W5 U( }$ F5 W7 G" I/ @
        this->j=one.j;/ F, @' u+ x2 o) ]2 s
}
* P& T! |5 p$ M5 m" |, ]; Y
% ?) F& X# m- y0 B  u* w$ oCA::CA(int m,int n)
% n4 H" h. }8 G% G# c{) r- Q  t% i5 ?# I) a/ ~
        i=m;
$ G5 l  k) a( |$ D, N- N# i        j=n;
1 `. ^1 H# S, P. V8 x( {4 S6 U}5 A7 x- n- O; v: B

$ M. x8 b, }( |( qvoid CA::print()2 }, X& k# T( r/ x# o
{" b: I9 g. F0 x# _4 K
        cout<<i<<endl<<j<<endl;& K9 X4 X/ `* F1 N& p
}* b" n1 t2 w) A4 a9 ?
' d. f( S' G8 H: V# a: l% m
CA::~CA()
9 ?% \( y5 p7 M, T{
% ]. G3 K% J) d2 c  H$ t* N}
+ ?; u1 q' J# W! [/ }
# p1 d7 e# u2 P; D7 m3 c' ?#include <iostream>
- Y  k4 W8 E1 [- G  X7 \, pusing namespace std;5 U; |  ^: W- U  a# X- |( v2 {
#include "复制构造函数工作原理.h"
& M/ X$ v3 _2 T; @int main(void){        4 a3 n0 u5 G3 p" e3 Q  k% o
CA a(2,3);        
7 k; U7 ~3 S, w" v  `7 u/ Ha.print();      
" X9 I5 Y6 M+ S! j3 H% N CA b(a);        % U: I( ~& n; x4 k( f  M
b.print();: x1 {8 R$ e6 x/ Y! F7 t
      
4 r5 o/ Q5 P+ O$ z. ?# w' v return 0;
* Z# M& ]+ o) ]% _3 S( n+ l}
! L# n1 k: }! C; k6 y
$ Z2 J8 e: @' E  [+ [, Q# f1 L3 B5 ~
, C3 ^! ]) z' G2 {$ P0 W2 }5 t. M- O: x- X7 h* N6 B, M2 M' X
+ e" D( x) P* o' N
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
' s! V3 s- B0 B3 k& h; e$ S: ?( h1> 初始赋值时:CA b = a;7 T- j  D% F7 d* @
2> 按值传参时:void myfun(CA ca);
, k, [/ a1 v$ U% G2 x. @  Q/ e6 i3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
% N5 E8 |3 o- o" A+ ]& n* R: _复制构造函数在以下几种情况下调用:
& H4 @# p+ x3 ~: a3 u, m1> 初始赋值时:CA b = a;
- C- ?* }* W% w  J6 G6 F8 i: Q2> 按值传参时:void myfun(CA ca);

) e$ y1 d* Y, l第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-2 20:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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