鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 4 t- l2 H# F' w- D
, ]. N4 ~/ J9 |! N' ^& L- \: ~6 K
class CA$ P' _5 n0 e' k" c2 `6 \  `5 v5 ?
{
2 ~! m7 E3 T8 Apublic:  H! Z1 j7 T6 p" e
        CA();7 w, Y: z+ ~7 }5 z$ i) v
        CA(CA&);
. \, o) q) I  J1 g6 N# |        CA(int ,int );
- n4 v7 I7 E% t; {7 R1 p        ~CA();
% v. z, M' Q  Y. O+ |) L1 a3 c. z6 F        void print();
; B/ g# z8 R) D2 }0 X4 N5 _: t) n; m, \0 C. R
private:
3 s+ o; \, k2 u* X/ M7 D2 Q        int i;3 q1 E" A* s1 O* K, a
        int j;
- A2 P% y, T* ]) L# h! }};- i9 p; K) {  g+ A
" G4 i2 \' w6 R( W# g
CA::CA()
+ t1 V2 I8 P: a' I+ {3 m& s4 M( a{6 q% u/ o0 H% q. |* X2 w
}, ~! Q9 ?$ F* w2 ^

6 G: J( s# c: _; ?CA::CA(CA&one)
5 Q5 C5 `, g- D4 P( t1 S6 I{
# A- F1 @! @; n& l' A3 h7 ?        cout<<"调用复制构造函数"<<endl;7 ^/ w6 R/ {2 l4 |
        this->i=one.i;/ Z6 A' t/ ?2 x9 c! y. a
        this->j=one.j;$ \/ G; Z9 |, q& h4 t0 q6 }
}
0 ?9 H* K3 X$ h6 I+ y# R
8 G) U& j! {% Z* v% fCA::CA(int m,int n)9 `% X2 A! Z3 V5 S) M5 g+ `, j
{& a2 m3 ~/ N0 Q8 V& W+ o: c
        i=m;+ I8 m6 L$ \5 v0 n3 F& ~
        j=n;6 t9 _7 X% _/ u& T* w  F  ^
}
3 w  o$ n9 m$ E$ J3 o7 R" l
5 U. b! w  `2 \! R, j% N) ^" i3 zvoid CA::print()
9 K1 j! v% W" I8 i' F{1 o8 M- n6 Q8 {0 P3 @' [
        cout<<i<<endl<<j<<endl;
/ f+ T. S9 D" b7 x% W0 y  S2 c: m% M}
8 i  O' N3 x" B2 u4 \$ v' ^3 V2 p- ~2 \
CA::~CA()
0 U2 t  v& F1 X7 m4 ^1 E8 m{( I3 i6 N  `; M
}; Z. e* e$ e( ~# G" ~8 q9 E5 O

1 {2 B" o9 r, ^  q. C#include <iostream>; @6 e" L3 {4 |% C# S
using namespace std;
- e; N, R' m0 i5 P' `7 U0 _7 A#include "复制构造函数工作原理.h"
; ~+ H6 z: q" T3 C0 U. p: ~int main(void){        
# L9 D, o' J+ W& n! MCA a(2,3);        4 ?, Y9 ]$ w* j, }1 m
a.print();      
$ r* Q) l. j# H- g/ Y& `# X CA b(a);        
& ?# `6 _: U* p! ^0 j% @b.print();& o% [: k" [: ^) f! v" r: a! e
      
- g5 ]- N) V8 Y  X+ t; j return 0;
, J9 [7 {7 Q5 k/ c}
6 J3 _- o! ~0 ^8 g* l- j5 x
; m% O2 d! {9 w% B1 v$ |+ A( u
: j4 M6 a+ _" ^) e$ ^
, ~4 T9 a# `0 m+ F% v; w9 ?9 m, B# a5 p& ~
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
5 i/ A0 c' J* p7 \% R1> 初始赋值时:CA b = a;
. r% l1 j' u, H4 H2> 按值传参时:void myfun(CA ca);
4 @& \9 F5 t3 O' ?9 }% i3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 2 N+ p2 d4 T( \) U0 h
复制构造函数在以下几种情况下调用:/ M) r3 w6 ^/ ^7 i" g
1> 初始赋值时:CA b = a;
; ~/ G- l5 Q4 d0 ?  r8 `2> 按值传参时:void myfun(CA ca);
* E( ^: \8 _6 D
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-13 02:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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