鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ) g) v1 n2 g" f8 u4 s. s

: k/ V; c: y9 g1 _) Vclass CA
- r6 s0 R+ w' U# L, j. s2 P{
/ a3 J+ W, \: d; `2 a, }public:5 l, K- t: ^7 q- \' f$ ^# {
        CA();# M  Q. W- u; [; ~
        CA(CA&);0 F, `- }5 J2 o% @
        CA(int ,int );& f7 }$ ?1 k% s! a& ?& y
        ~CA();, u* [. c2 a2 Q+ h' O
        void print();
8 B0 p: m# ~& f* ]2 x2 R- U/ L& |( L( H' r$ |" _
private:& j9 f* l- I  r4 {
        int i;6 g7 C4 H* e3 D( L% U& n
        int j;4 F" t7 Z8 K9 p% ^
};
# R" z  y2 X( ^/ J
3 D! f/ z" [2 x& h% N0 mCA::CA()5 V0 N5 u. w/ ~
{; R$ I7 u5 V7 G. a) J% p: ?
}
1 D$ @+ ^2 ]; `! x) ?8 S- L( Z1 y4 S  x7 D7 S2 K- D& T* k
CA::CA(CA&one)
1 i5 M5 D( [( [& ^+ b{
" }2 n% b! F2 ~4 @        cout<<"调用复制构造函数"<<endl;. p* A9 I. i. v1 o% s
        this->i=one.i;
- H; e! h8 E( ~2 W1 ~! w        this->j=one.j;/ V* ~9 L1 j* r0 h/ `9 s
}. [! s; n& E& f) X

# A# l* ~9 s% {8 ]( b6 a! x2 }/ y4 GCA::CA(int m,int n)7 `1 l  A: c# z' Y
{
( J( p2 k+ D; B# P, [% i        i=m;. _' d. t% g: g; L
        j=n;) |% W8 }! U; |* {
}
4 @% D1 U; Y& O8 u. z1 R8 L' u$ Z/ r" q3 a; ?) Q/ O0 G0 J
void CA::print()' o: I8 K& O! ~4 e, ^5 `# l$ ^0 m
{
  ^( D, P+ I& A, T' ^        cout<<i<<endl<<j<<endl;- p' v) e9 j. I9 m4 X4 k; o
}
8 Y3 W7 b/ k" E! m- c! r
6 t( D8 ]3 v3 p8 z$ @$ S  b5 }, B! MCA::~CA()
) W5 I3 W2 |& ^4 b  M' e{' u8 l$ e6 b, G3 V# M: _" V" H
}% C% `* ^" l: B/ @* Q1 f7 O) n9 }7 j

3 O+ a! x+ H* r, o* l- T) w#include <iostream>
, K# E. |( S1 U- K2 j1 {, r, @using namespace std;
2 R, K3 U5 l, e#include "复制构造函数工作原理.h"! `) J1 ]+ P  s8 O; i% q) T
int main(void){        
, D9 ^, }0 H/ [9 U2 PCA a(2,3);        
# W1 u$ J: t6 i3 M/ C+ F  V  g' Ea.print();      
( `+ D: i# J9 m( r0 k- u9 ? CA b(a);        ; w8 q+ u9 v9 {3 r
b.print();
& n" H( a$ b" X0 Q% E! f       2 d- ?: _' h$ l
return 0;
6 i; C2 Q6 M1 }8 @* M% O6 X2 h# _}( J0 e2 Q+ G4 \) ]2 ?

! N* m6 |' E) n& L- S: d$ U9 e5 j: g4 P
0 q: G# g1 |# A6 D9 E% u

  M, q5 n5 P0 y: I# z5 g
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
# y) @3 U1 T& |. f, n( t* ]6 u3 q1> 初始赋值时:CA b = a;" m$ x8 r' J  p3 i) ?
2> 按值传参时:void myfun(CA ca);* z: j* o+ X/ w; N
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
$ r% |- [: o  z) A2 H/ S* s复制构造函数在以下几种情况下调用:
2 ]2 j0 W6 V! q* I7 M6 `* h2 T1> 初始赋值时:CA b = a;
3 Q& b+ m' N2 a% |! U1 A2> 按值传参时:void myfun(CA ca);

* ]- e! x6 g3 a' V) H. {第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-7 17:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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