鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
$ N2 z7 t, ^0 Q, g. Y, s+ X  i6 \( P8 E2 c2 p7 v, \
class CA# P& M) B: A% E( ]. }
{4 \% k* J. P+ l7 p
public:/ S+ i* _6 ]( h- v( M- U) l* v) P
        CA();
' W, c" A* p% t6 o        CA(CA&);) L3 i$ [& _6 `# M) G# a4 f% v, g
        CA(int ,int );
9 N& C) t" g, S: u- G# U        ~CA();
8 V8 N1 |4 |8 M) P        void print();# l, A+ m- |% [

3 S' T" Q8 n1 Tprivate:, l3 {/ n4 s# ^
        int i;
" H2 H6 `( }) {8 K8 i" x- j0 l0 I. y        int j;
/ N1 z6 q) L' ~" P6 P; N# {' H7 l};8 _6 n" X8 V) |6 F3 p6 I. g+ e

9 o6 v0 Q$ Y8 M" p6 O! O$ S7 |CA::CA()
8 x+ D' `! E- p7 w9 A6 h{
: L/ ~% i1 W! W. M1 s/ t* V}
+ F$ W, ?- r1 f( k+ y3 w1 `: [+ f1 f3 m8 E
CA::CA(CA&one)
1 z9 |+ I' i; n1 V- x+ p! _& j{
5 H! O; R3 l. K3 L1 ~        cout<<"调用复制构造函数"<<endl;
) G' ^) k) @6 s) f- W" W        this->i=one.i;
- \9 m6 n! a) q  H4 j; H        this->j=one.j;. T- M6 W  h( `% C$ Z
}
2 U+ c( C6 j- v  f/ H; U/ e4 m% B6 _- f9 ~+ p; r, r
CA::CA(int m,int n)" A: F* v; a# ?+ V
{+ `: Q- u( t( h0 t, A
        i=m;
$ r$ a1 w4 G6 G! p  z: W        j=n;
6 j" ^2 u- c: B}
7 |6 `7 [+ _. q; S+ ^% |, r; r! j2 F( T8 M
void CA::print()8 a7 j6 [/ F3 u
{$ w' l; R+ Y6 C) |/ @& A
        cout<<i<<endl<<j<<endl;
, c8 P$ o# x; a; T3 k+ Z. i2 v, `}" m$ g# d. M% Z. @/ _
9 p7 n: z2 i- R! @
CA::~CA()
: H3 \& z5 u; Q4 \, I2 R8 ~{) _$ ]  V' G: h9 T
}5 a: K- _5 M" p& f( @* p

- j; M' A8 D; K+ N, a; |#include <iostream>: V& f1 u( H; O' {. u0 X/ k
using namespace std;9 D* C$ L2 e$ f* F3 v% R7 ^
#include "复制构造函数工作原理.h"9 ?( X/ d' w; P% V! d- m7 o
int main(void){        / N; x( _; n7 a- x$ a
CA a(2,3);        
; Q+ w6 n; l+ D* Qa.print();       / B2 P7 {0 g% y0 a
CA b(a);        0 N. d  Y+ u: b9 O; Q
b.print();
% p% K- f) i% v0 N! x; M) v      
1 m1 O# r' P4 S6 E2 Q/ h return 0;
+ T' ~% A4 F$ z2 L$ L2 m}9 Y3 k, A: u( @; B0 y. {* ^

# c1 a% h% J; }
1 d! V/ g7 }7 `+ D; U  ]2 P" o0 g  v. Z" Y
5 j! S. Q' I/ R1 l9 ^- Y) u
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:: w( E; A! {1 V! K
1> 初始赋值时:CA b = a;& b* Z$ D0 [- ?
2> 按值传参时:void myfun(CA ca);& S% T+ i1 p6 [$ X  M- X: I# c+ Q* [  U
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 2 j. F; V/ E% {9 E( e
复制构造函数在以下几种情况下调用:, x. a9 v5 e) G# H# x2 R) m" |- z
1> 初始赋值时:CA b = a;* m' ~, {0 O! Z
2> 按值传参时:void myfun(CA ca);

7 `* ?: l, i; ^4 P  C第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-6-14 12:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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