鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
) q4 @  |3 l7 \4 c7 B, ~  Z6 O" o! g4 R3 `2 W0 L
class CA) G* M8 J( v& w& s
{0 O+ F& o7 C* D. _' C# A. d$ t
public:9 k$ A) _% U3 u& d
        CA();
/ g4 G+ q6 T. E( [4 g/ T- j        CA(CA&);
- m) R5 j+ r; X4 i        CA(int ,int );
) I1 Z% B3 E$ N( U6 Q. Q& C/ G        ~CA();. R, ]- ?5 w; N7 |
        void print();
- t3 b6 z$ x4 G" J. M( s  b6 i
3 x- [! h' g/ ]private:7 y' W7 \  h9 t' W5 H, R# v( E
        int i;, F( q$ f+ h# R& }. ^% }
        int j;3 `7 t, H# ~; n% G: b. \# i9 ^
};
+ ?( b' `  e% a
: O- g5 p5 W: s1 i2 B9 ]CA::CA()
4 P) b0 |+ f& y/ L+ q$ ^7 W{* T# `: [) a3 N! a% l) W- {
}& Y( w8 H& J( q" o( B

8 o4 O' V. i- x" d3 j2 ICA::CA(CA&one)0 g( Y" g) Y4 `+ V& U
{0 Y: a$ X- T# a) ~2 B& v. ]
        cout<<"调用复制构造函数"<<endl;/ \( p% V. v. _8 y
        this->i=one.i;( s5 r# |; e3 b, ^+ U, o; j  ^
        this->j=one.j;
" `9 F5 w: r9 G$ L' z# O* o3 M1 r}/ ?  s# A& }+ c0 Y
- z3 o6 P) q# L% [1 @+ I
CA::CA(int m,int n)2 ]( A* Q6 o# B: X( B
{
) {9 y! U& e4 H) r% ~. Q        i=m;
5 r/ Q( V( k+ x' F$ t        j=n;4 A& ]" b) C1 P) _6 w/ |) \2 v! l
}
% o# z7 S! }1 f
5 ~: ]4 I6 J" x9 Q! gvoid CA::print(); ~, S+ j$ z$ w7 }4 S6 c
{. K$ {; E* W: {
        cout<<i<<endl<<j<<endl;* s: k  m& j" U  Q% |
}
1 `9 ~: }" }- A1 U/ x2 Q
) e: b" Q% T( \+ R0 v$ wCA::~CA()3 P; n) I# `% c. y, H
{
" C3 E/ G! z7 u; |3 O+ t6 f}
  l+ @' ^- Z! E# f8 u% c* ^2 A( Y8 V# \: B( b
#include <iostream>) h9 T7 t% Q, T! ~# W
using namespace std;
* `( b6 K- m* x! r# k( \#include "复制构造函数工作原理.h"
& {) X: J5 p# ~0 ?4 Y7 Wint main(void){        6 O, U$ Q0 ~. l- L( l" K4 |
CA a(2,3);        & Q5 `  [# j- u( x: C
a.print();      
4 h* m. A) X1 x9 B CA b(a);        
+ D" X$ O; c6 Y/ w& ]3 Q, T. Nb.print();/ |! _% U; k- \  q2 }4 I' N" Z, w
      
) O$ `9 P5 m9 R6 l4 j$ J+ _ return 0;
7 J: i! }- J! W' b4 l}
% U- E. p* h8 n0 Z" Z) d: B7 e' u6 i$ _  A4 q# i3 u* \& |7 \  \
7 x3 \: n% s2 m0 u4 u  g; @  U
! p& M; u% @3 N) t; g
; W4 f, }3 C, @2 j3 g* P* i
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:$ F8 f; u& t# \( f  l& M  r8 |% B
1> 初始赋值时:CA b = a;- J& M. I' G' X+ ~3 I& j: Y
2> 按值传参时:void myfun(CA ca);
  H/ p  {) _+ I. d* F" {$ A3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
# E$ u7 e5 V/ V( \) b复制构造函数在以下几种情况下调用:1 B8 t! ]! U; m6 @) M
1> 初始赋值时:CA b = a;3 U; q4 X% r1 O; j$ H
2> 按值传参时:void myfun(CA ca);

! h; f( Y2 Q+ W0 o3 O第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-18 15:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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