鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
, T" _! q5 t( u: T, u$ J8 g& A7 m
class CA
* a3 h: t* O" P" S% A6 a{- Q& T& L$ h' z& x8 {% k
public:8 a6 t$ m% I& U9 N
        CA();& H! U+ f1 f: y2 Q
        CA(CA&);
" l, d- A8 P6 |  \7 [        CA(int ,int );
- }& o5 u& D7 Q3 q, s4 _  |        ~CA();$ Y3 o1 f$ r3 A, M& ]0 ^- K1 M
        void print();, `8 g# J! i) A$ a2 k

) t' B9 I4 S2 ?/ aprivate:
) c: z0 o+ Y6 \8 r$ d        int i;
! e; U" l  A$ Z        int j;
- [# I6 `- w' X9 O( s1 F};
& Z: U% i! S3 l5 R, h& V3 h  s: Z) K* |
% q, h2 H) K& Y# A7 xCA::CA()5 ]. [% r% `2 ^! Z6 h
{/ N  U& w! V) g; f' p/ m2 z3 G
}# ~: z. j9 K) u3 d1 F3 U7 P

: T" V8 a% }, i  ]/ @! T8 _$ oCA::CA(CA&one)
) L5 z& g8 P, `8 O8 Z1 R{" \4 z% I1 G; j% {
        cout<<"调用复制构造函数"<<endl;
& B- n0 l3 L5 ]        this->i=one.i;# k+ c- V6 E& m
        this->j=one.j;
  l: T4 @2 ~; C% [9 ~}+ V9 o& A4 ]& N/ H2 |' l- c
  w; T: Q7 U! f3 ^% y
CA::CA(int m,int n)- ]- T9 d% k# h: j5 }7 M0 k' m, ~
{
  D: n6 B2 {/ \& J        i=m;; z8 k' L$ {/ A0 v% W: e+ J- y
        j=n;% k- q- I6 C" p/ b6 A5 r
}
3 Q' y8 L; j; n" n- a  Y
; t! c* z$ u& n3 c* lvoid CA::print()
# j; A) L4 S: t" z; U{: F, x; R! K! C# A3 {% c' w- d
        cout<<i<<endl<<j<<endl;
' @7 f9 Q( j/ V$ ]  }3 P! V}/ Z  X1 L. }% w) C8 x  Z' J9 [

$ ^% M! A5 B8 I  `7 A, eCA::~CA()
" J& w$ Q' l: ^0 F) z  M2 G' `{& W1 f1 W  d8 L/ q* T; B
}
7 Z  x% U' t$ ]8 }; R+ U4 K6 u$ P
) m2 L% [! v/ j! a0 |#include <iostream>
3 B8 t& W: m. J* D' H& Busing namespace std;" N7 A( P  W: Z+ G
#include "复制构造函数工作原理.h"% s( m) ]# T  t' ~( t4 h
int main(void){        
. y2 H3 g& P" x3 i8 H" c1 y( wCA a(2,3);        
9 ^" a( Z- y! q* \  D+ na.print();       - b& d. ?  d' g; S5 |
CA b(a);        2 ]( L3 |% N( C( v
b.print();& s; Q( W) `6 a. k! u
       / f" ~  B. X7 a% _
return 0;
. }" F5 N2 h+ U8 z+ z) n# D}7 R+ X5 v6 y- v! h2 d

4 T' w1 F7 e; K, ?9 P: V" G" r# t0 ^5 [  o7 f) Y: H# }

( Q, B- h; @+ B. L  Q% o9 n5 o" _/ W) o
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:+ Y* q" _3 x0 x1 E. z
1> 初始赋值时:CA b = a;
! l. d+ O: `0 g. S2 g2> 按值传参时:void myfun(CA ca);4 ]% C* D* k) B1 ]; F: G! _
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
1 Q9 W- [0 k( c/ ~2 v# ]
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-10 21:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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