鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 3 c' t" o2 b7 [! M7 [5 \

$ {; i! w/ n: Hclass CA8 S; q3 D4 V; x, B" Y5 ^9 _
{: j: `! j4 Z% W
public:9 e6 C: r4 y' ?4 ~1 Y) Y% I5 y
        CA();
3 I4 e# \1 F1 i& F9 Q; D        CA(CA&);9 L- C3 o+ o. Z, p! t! X
        CA(int ,int );4 {* m5 T0 X( E* K6 |- @  x
        ~CA();, ?7 R2 b/ f# s( x! b' N: d: A
        void print();% R: d4 v  {3 Y: Z
7 Y& J4 p, N( e  h
private:" t  g: G% I2 {0 @% I
        int i;
1 [1 f' M- ^  ]- A; F8 _        int j;# Q: ?) m" X5 Q" K$ S$ Z
};! o5 J0 t& ~& B) N  H5 h
4 e% o8 B; C4 d$ {$ v
CA::CA()4 B( d: ?' k2 d& r0 a
{2 b; c8 n5 @/ o1 C" Q$ S
}  x2 ]' O  t9 E0 o/ d
/ n; X( H3 l+ m- Q) Q$ s3 Y
CA::CA(CA&one); p& u4 M1 Z/ y' h  S
{$ F; q' Z5 P! T1 f1 B1 x% m
        cout<<"调用复制构造函数"<<endl;
3 @3 T0 T5 L5 g' C1 e        this->i=one.i;
& A& v, P, S+ o$ u4 e- V7 W7 ~        this->j=one.j;' c0 u. c& ~3 o6 @* D7 ~/ e5 `
}
% K/ Q  i6 p) `( v$ L9 I: n5 k4 P( P1 A' M6 H1 A
CA::CA(int m,int n)& i2 ^" h! ]: T3 |
{
" M5 B5 |. r$ y' D* g' `        i=m;/ U: i$ V4 Z2 M& n
        j=n;- F3 Y  F/ e7 F4 @3 }  L6 B. ^
}2 C# M8 o7 ~6 y' F2 Z* p
3 B! Y, |( j/ b$ ]% D# E9 C9 r
void CA::print()% m' I( S$ Y' {/ |5 V
{& H. G( g! @) [
        cout<<i<<endl<<j<<endl;
- o- W( ~7 i$ {7 x$ D8 }* Q" b}
% N- u, v- }9 e, J5 p
# F2 m" N1 o3 n8 f3 \" B8 w' zCA::~CA()$ u9 W# ?4 M- f% A
{4 m) a! R5 q1 g) B+ u" l+ J) _
}5 E3 z/ B% a) g; G6 f

. ?6 k( g! B' Z- v: g#include <iostream>, J: {+ ?, |- u2 t
using namespace std;# k% a/ y1 O# X- k* R6 z* P
#include "复制构造函数工作原理.h"  u4 N2 n$ t7 D% N
int main(void){        
$ P! U1 K- h: r" y; n) ?8 pCA a(2,3);        7 S3 @. d& v9 t' L
a.print();       6 v) p6 t+ B* X) n0 t8 v# I* ~8 k; L
CA b(a);        6 w3 J) L9 B' k8 Y1 f. J/ U5 J
b.print();
% ?1 |+ _' I- T8 I       : m- X6 I/ N, j) |
return 0;
% u0 L4 T3 h+ y' S% P}
+ D: G* T" I* a0 V( _
7 `0 o( P" D. L! ?2 E- T
) K$ \2 r5 l, B1 E' V5 Z& f) ]
: f% Y: R5 K3 U( ?0 c% l5 W' U' ]5 ?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:- \8 [. g+ v3 U: z# V3 g. j: U- D7 C7 L
1> 初始赋值时:CA b = a;8 y  B6 L/ v$ C2 F8 U! d, X
2> 按值传参时:void myfun(CA ca);
: w9 B0 ]4 x7 A: T( G3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
; y8 _, ^5 A' x, S+ ]2 x: s
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-6-22 13:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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