鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ( i5 }, H9 P8 t, c4 n1 ^$ z5 m
$ y5 K, ]8 ^* Z5 w$ H. M
class CA
5 b( C' Y' T# ?  D3 R{
" j3 s1 I0 N& N# v/ [& Apublic:
' w" U% F8 H' d; G9 t0 ?        CA();
- E5 A6 r- r; K8 V8 ]6 J; @0 x        CA(CA&);: }$ C: P! @6 o/ S
        CA(int ,int );
& ?+ \( r! i1 w5 w6 ]        ~CA();
5 Z6 h; C! |4 Q  \" W/ ~        void print();
/ |/ q. _: L! s$ A5 G  b: g- J2 O; S' ^
private:) q/ @0 {* r) e
        int i;
! D4 F+ V4 t: K8 Z5 b0 R! H- S        int j;) q, [! _4 ?# H( A
};1 J& F" M! V* O, z, {
" o9 K! s; d# j$ j/ [* M; _, ^3 J4 l
CA::CA()
) R# o& Y* B% f8 ?' ?( D{
: ], @1 \$ q+ g" q/ c, ~0 g: C}
' M- k9 e0 Z2 H# j- I) E1 E1 p' U6 K7 Q3 M
CA::CA(CA&one)) d" T; X; N; @+ b; \; @& [. B
{
: y- {' p# X: ]0 J        cout<<"调用复制构造函数"<<endl;
- K: Y7 S  O# B        this->i=one.i;
7 o$ Z$ e& c  d! F        this->j=one.j;
7 R8 e" G" h: S' i$ c+ ]}$ ^% s! B7 R0 S6 l
' w& K, I6 E5 A3 ?* V
CA::CA(int m,int n)
& ~0 X, d' g( l0 ?{; H4 F. I& a2 \: {* ?9 `9 z. R5 L
        i=m;( q& ~( `! M; g. Y
        j=n;6 C; P* I, _& o" }
}, m& }7 r. v/ M' i/ p. ^4 ^2 ~

7 D9 ]8 D" ~1 L3 a3 |% Fvoid CA::print()7 T4 n% T8 y4 |  K" K) l
{8 ]  ~- e' [5 Y" q
        cout<<i<<endl<<j<<endl;
) f& j6 i* f3 L& i3 `}( C8 S, O7 r6 o6 c" H
+ b% R- ]8 o  T1 Z6 ^% q
CA::~CA()
$ \7 i1 }( ~5 _" K* g. U" G{2 E3 f3 r- [7 z  J6 p5 r
}
* D( `# `2 G# {: q" ~, q( a8 |; \) a8 b/ B1 u
#include <iostream>1 T: B4 F7 |  f8 f9 ]. N
using namespace std;1 B/ Z% f0 [& r4 ~+ p
#include "复制构造函数工作原理.h"
" Y' l3 Z% u; h' m4 T8 Nint main(void){        * y3 L5 g* ~- l4 A5 ^
CA a(2,3);        & i  Z: B' _  \8 v$ B( ^6 X
a.print();       3 |, z8 u4 V3 T: t1 ~: b# F9 L
CA b(a);        
, h9 B% A! u, v3 w' ab.print();* K9 B( {6 \3 ]/ O- U8 K
      
" d7 m0 x! P9 l; t+ P! G' s0 i return 0;  h' r9 h  M* \0 W, ^( c
}
7 M( n" m" t! V1 u3 K9 c9 V  S+ h' E) T* h0 [, V6 h% e) R. L
$ v* \5 T- c! U* y& Q

' ?: l$ O, w4 r" r7 \
6 K( t1 Q2 z6 ^7 Q; d4 c8 C
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:2 Y6 s4 Y, R- ^  [+ c  U. [; A" ~
1> 初始赋值时:CA b = a;8 E9 q0 S9 T. u9 |' A
2> 按值传参时:void myfun(CA ca);3 @6 |+ e* U8 S4 r
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 & b6 h! ?. M- Q
复制构造函数在以下几种情况下调用:
7 k' l. y: i1 r0 @0 J  H1> 初始赋值时:CA b = a;
; r  W: m) P" E$ n& o9 h& Y" G, ^2> 按值传参时:void myfun(CA ca);

3 e; t5 n, p( B第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-4 13:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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