鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
1 M( a# q5 ]! W7 X/ m7 N7 \, l( ^) I7 B. ?+ y9 x
class CA1 v$ Y2 i. u' y6 z
{7 f3 u: g4 \+ u, M8 C, I4 T0 H6 {
public:  h2 h) V" E) n. C+ F: w$ z, t: O. f
        CA();9 g) d! ~: Z) C- a8 h1 t
        CA(CA&);
" ~2 t1 [( C! B        CA(int ,int );
  d7 R: G$ I* o        ~CA();8 t0 Y  C/ h' q2 {) Z/ N
        void print();
; t. l; h4 O" m+ o; v/ ], e9 V* G
private:4 e8 V( |& N5 }
        int i;
! d. t( U: |$ x8 S4 s* Z        int j;/ I/ f# U7 [8 Z: \& Z8 g
};
/ H( i# v1 e  ?: s9 a, `$ r  {
2 c9 b! v. p; G7 V5 q$ ^& I  qCA::CA(); n% R( U) M+ e) m' I
{
$ E! v  C; ?) m1 B* ^+ F- A}# A/ h+ |) D5 N. s3 |! l
$ ~' c+ U2 g; g; R, r3 x3 f+ A
CA::CA(CA&one)0 b8 e5 e& |5 g% g
{2 k) G* M; s; G9 @- {  n& g
        cout<<"调用复制构造函数"<<endl;. g# O6 o; g5 M- Y# k. |" x7 d6 v
        this->i=one.i;
8 K. C) ^' V9 _+ [9 j7 u" U# b9 _        this->j=one.j;/ m1 ?) j2 f$ E7 ]$ j2 J  c
}
8 ?& o8 ?, J$ S9 u' i4 F: `" Z$ R8 l* }/ r( s
CA::CA(int m,int n)9 x' L* X$ |5 R4 H8 y  Z" U; ^) d
{
4 Q7 Z  [6 r& ]% |" U        i=m;9 Y  k5 A7 v6 d( W: G) u& V" u
        j=n;2 Y, ^4 E+ M% x; U
}
1 r- `9 |& @" W- X% E
' H. i! g" X7 I3 W( K" Kvoid CA::print()
0 l8 Q; M: C% U9 O' W0 C{
. @8 k. n. ~* e% \        cout<<i<<endl<<j<<endl;9 }  S2 X0 {# `# y' }% g
}: q, L  n' s0 f3 G9 O% J, K0 \2 z% I- O

' E+ r' o' C" T) C+ ACA::~CA()( y9 V" k7 Z% V1 @& X" s- a8 B+ @
{
  Y% B; b6 s6 {+ R" E$ D}5 I) Q  k. R; a3 F0 M
5 P$ P& R6 a% ~4 U% x! L! r
#include <iostream>
$ Z& B+ b- L: s+ Eusing namespace std;
; O% C, ~9 S. P+ K#include "复制构造函数工作原理.h"+ {, E# N5 ^' x, e
int main(void){        ) w+ [7 o# v6 d8 m' t
CA a(2,3);        ' j' e1 @/ H5 o# l. T* ~" g
a.print();       ' e5 x! X1 \( ~3 ~2 ]( n! e% ^5 a
CA b(a);        9 S% R7 u7 s. X2 V4 [
b.print();/ ^; U0 R/ }( O* L2 @! ~
      
" o# x; U  D8 N* M return 0;& `5 x7 n% s4 j2 I, R1 O# h
}
" c5 {% y  ?! }3 U
: N. x+ _4 Z0 z! [8 f1 o& O4 }/ T. c; T" l" `' m2 e$ E% J
7 i( P& Q) _9 Z% c

( Y! d2 f! s8 g. j
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
( W, T' l/ t( }8 D2 f, _1> 初始赋值时:CA b = a;9 C3 G# P$ O' Q; M: ~
2> 按值传参时:void myfun(CA ca);
' H& [, E" m  I$ F. W  C' W3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 7 A/ Q) G* `9 k/ c
复制构造函数在以下几种情况下调用:
' H+ m* @3 N& Q0 m) H1> 初始赋值时:CA b = a;8 O. I, I* E5 G% T
2> 按值传参时:void myfun(CA ca);
/ g1 e$ j/ x( X7 R8 L+ Z6 L
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-10-1 18:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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