鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
7 t, U5 o2 ~8 y/ x, r
: S) }) m; K* }$ Uclass CA
  O- w0 W" c: T) H$ e{, _# E9 ?+ E  ?9 R# I0 l
public:+ u: ?/ |% d+ u) i" \
        CA();6 C% G7 [5 }' D& }6 |1 ^1 I
        CA(CA&);
; P& ]! h) D; a& k        CA(int ,int );3 @/ Z3 y3 a$ X$ {
        ~CA();  S5 ?6 g, l% Q9 Y2 P
        void print();2 O4 g# S4 M  \" S( K  P0 C6 y
( r: U3 w6 r( `# D6 B$ T' h8 I5 Y
private:
' r1 g; _! `6 L7 y        int i;8 W4 S% D4 u9 I/ c
        int j;
4 `- X- U; V# R4 A3 s};
; N9 G$ ^5 M; s$ M
$ y1 P2 a: h/ S/ q# u7 ]CA::CA()
+ e7 p1 l  f( }  ?' X- x{( T) L5 `& [* a8 p" F
}
2 g6 C, {; z" F5 m9 [
8 @2 f% Z$ {: j* ?! b5 s& |CA::CA(CA&one)
# }) s) B4 a" y/ z1 L{* @& Z$ P& j6 W0 _5 B: [* l
        cout<<"调用复制构造函数"<<endl;
$ z/ n( h, F2 G9 x        this->i=one.i;1 W* }# l2 E; ?1 e+ W* k
        this->j=one.j;7 e! B' m0 f& c) d
}
- m" z, w* Z, O' r% p" i1 _! J8 `" q+ W
CA::CA(int m,int n)
1 {( y+ }6 \4 |4 K2 o3 j# Q{. D+ v; b' i" e! n' a
        i=m;0 t; I. d( }" P+ _3 s' G
        j=n;. F( a2 |* s7 _. l& D8 g7 b# D
}
. B% ]. \1 N/ C& Q8 c7 N, ?3 v0 d
" Q0 b# p% D" Z0 dvoid CA::print()
8 h9 H% p+ @) P4 Q* S5 F1 D' B{
) a% I) T7 s2 p0 B8 `        cout<<i<<endl<<j<<endl;
& x- m) M# E9 m" z* R4 d5 w, k}
0 `: |+ @6 C1 h+ T5 W' J* R3 ^: w9 J% r
CA::~CA()4 ~7 D% U* d0 v: M/ i1 y" |
{
1 S5 R; g8 M7 ]}
( F, I+ \3 Z, b+ u$ L4 B
0 {; {0 @" X3 A: Y  @& O- \) M#include <iostream>
' g" M) {' i' F5 Husing namespace std;
& t/ z+ a% I: G$ \' @1 M; r#include "复制构造函数工作原理.h"
9 T; ?( M; U% P+ P* U# l3 U2 Fint main(void){        
2 V. G, C+ c+ e" f' l' S) [CA a(2,3);        
& J. R! a( ~( e! ?, ia.print();       % D8 j: p& X# I3 n' c% g  j
CA b(a);        
, t. ^- q/ S( |, f- pb.print();/ F3 r9 V. `# V" A6 D
       4 R+ m0 _! z* m3 @! M8 _* V
return 0;
: Y$ R+ P. |# q% v9 P) Q}
. r! N0 o7 d& r. D
# U  l# i4 h9 n9 i3 x" H- W' q; a' z5 e1 v
4 w7 \/ [. U+ ?7 {! B3 f' ]' n
, S: y( f1 R% l1 R: E
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
8 A& O7 H: X/ ]* t5 Y- i& G  I& |1> 初始赋值时:CA b = a;0 B; E2 v% {& y
2> 按值传参时:void myfun(CA ca);$ X$ c$ q  t$ B: G; l. x' }
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 + x3 a6 U6 U9 q  N
复制构造函数在以下几种情况下调用:
0 Z: Z9 x. J5 b1 i3 J$ r% P6 B& _1> 初始赋值时:CA b = a;
) S3 D! A. Z/ x9 l0 B2> 按值传参时:void myfun(CA ca);

9 D( ]( t' R# G6 \; G第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-18 10:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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