鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 # g! F/ y, ~) j" t7 m4 M+ [6 f

" T' V8 k5 w8 k" `! {6 V  `class CA5 j5 j$ {& {) b
{
6 V2 N* A5 n2 I4 H7 J7 gpublic:
' c0 S: B8 [2 w  V7 r        CA();! a% Y+ S0 x: M( V. R9 f
        CA(CA&);
; T/ q6 t5 Z9 d' q# z7 n% N( n6 w- Y        CA(int ,int );! @+ Z3 Z; L% L8 N5 @
        ~CA();
" k+ z9 L# l% P        void print();
0 e1 R+ r( m; @6 c9 y) l  K6 Z# G9 P2 g4 e& h2 _$ U
private:% t3 L4 s4 E: ^3 H) I" Z, ?$ V
        int i;
" D0 z# x0 x2 k+ W* ]8 E  ?, V        int j;5 c( G9 w, H. d
};
* }4 v: `' H$ }+ e$ c
& G7 _  L$ q6 Y1 ]' \, E. tCA::CA()
% ~7 @8 q  O; \: ]. P{) R# Q' H" t" M
}
4 i0 \( r7 @) h2 ~3 A. ^  Z7 H, g7 I  i* C# U# j0 i/ L
CA::CA(CA&one)
. u2 F( I" T, C4 {, m! o; Z8 G8 [{1 x" e+ r: M) D1 j) m. f- T  B
        cout<<"调用复制构造函数"<<endl;- {. h' T7 p' p1 V
        this->i=one.i;; z9 M& i. l- D- T) I8 l$ {9 c0 }
        this->j=one.j;2 [0 c2 Q7 c2 S5 F# R
}6 ^+ W4 T" ]$ d0 V

6 r$ i+ f# T. ?: C0 b+ YCA::CA(int m,int n)9 I5 |& P% b% K& J2 N
{: T4 {, s2 l4 W: r, E  D
        i=m;4 X/ R7 d! T2 h8 _* z
        j=n;
: A6 T; M- Q3 V& t' _- K# g}3 |4 s3 r& ?% n
3 w% R1 s, E- I+ }7 S. J
void CA::print()
  E# }+ S8 M- ^2 p3 P, |{
+ F/ S9 N$ `9 y6 q4 m% v! D. ]: \        cout<<i<<endl<<j<<endl;
$ e1 R# G& C0 L, _2 K) Q}
  H6 ]# P2 i0 R4 `% h' _! H- v1 Y; v# |" b9 l- o
CA::~CA()
) ]$ h, \* l4 V" H8 @5 Q0 ^{/ q2 ^) \9 ?5 @) Z
}
2 h5 T# ]; _! y5 Y
4 P5 f- i3 e6 G* c9 `& `0 I#include <iostream>
" W1 P5 l$ w( T0 k- D& l6 w2 `# D9 J/ `using namespace std;
+ J$ Q$ W3 D7 i. q5 W#include "复制构造函数工作原理.h"
; U# P% p- `3 H3 c& Fint main(void){        # g. E% x4 L+ ~( r5 F- j
CA a(2,3);        
/ `7 k5 b* ^0 i2 ua.print();      
) ?5 J! a9 L4 c- I* V& Q' m' j0 P0 { CA b(a);        
: l6 R/ Q0 a! V/ ]b.print();
  i( I- X) q7 y8 ^/ O+ V      
6 q+ P% j2 J/ P& x. j return 0;: b2 M  Q. x, [+ V" L
}
* k( K% o; S* y, \9 _5 T
5 {; E- h7 q3 S. j1 H3 b  A1 `! Z% T2 C) M$ O) Y
5 L2 G# a, f% O( t
$ R% @* [; L* j* D) A# z# ]
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
* E+ F: T  ?6 K1> 初始赋值时:CA b = a;
) K, u  B( p! V- X! b9 a! l2> 按值传参时:void myfun(CA ca);" C0 P: L5 H2 C% ?" _
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
/ M! `: J4 H# Y& p复制构造函数在以下几种情况下调用:
$ K7 x2 A7 \( g2 ^6 U! ~1> 初始赋值时:CA b = a;
% N# e% x8 f  s& E0 [' A+ z2> 按值传参时:void myfun(CA ca);
2 Z+ @9 a% D! Q2 p. w$ F3 s2 P! D
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-15 00:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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