鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
3 b. B% E; |# ~" \5 O7 a6 h0 ^0 K! }+ y+ V
class CA
( K; r  [( u3 X{
0 e) u& H+ M% h* O( i) N/ jpublic:
& U! P9 ~+ `, O# l& ^3 Q        CA();! h7 Y+ v; y0 O  A
        CA(CA&);6 L& m+ Z  m" H- g
        CA(int ,int );
6 v7 @8 c3 _, q. B$ `1 `8 W6 N$ k        ~CA();' l- s6 t4 d7 f* F2 O
        void print();
  I% L( @* b! s! H' H. s( p: a" W5 O" A
private:
9 O% [: M/ Z; l        int i;( W+ W$ ~& ]+ l3 I( W
        int j;
1 O  x" i0 G. f  [};$ l2 ^! r1 [7 {; D- [4 F
% V) |: k' {% e0 m6 E
CA::CA()- E' L0 z8 y3 ~! V  Q/ [! B
{
1 I& [- |# }# f) \}0 q0 i0 E0 \% j' f  f
. A6 m- t$ h8 c$ [- S8 T" }$ a
CA::CA(CA&one)
- T) P+ G5 `" X2 ^, M  w{- K  G9 r# ~* b; ~2 }
        cout<<"调用复制构造函数"<<endl;$ O. b( h) a: @
        this->i=one.i;
% }8 O  A. [9 T& r; u* Q        this->j=one.j;) h* i; v7 @$ B% x! p! _) |8 ?! k3 j8 R/ Y
}
) K0 n/ A& q5 r
  E1 y% p0 o4 r1 [2 {CA::CA(int m,int n)
0 g9 X# n7 C- }* [{
1 R5 O6 v: a+ m# U* Z7 `" L8 L        i=m;
/ [& F: E. e' k        j=n;
. r9 k! C  s, q2 A9 Q5 z, C}: r/ N7 ~6 E6 R" b7 k

# t& v! @# N# H$ i. Kvoid CA::print()
$ y! A. f" q/ K  {+ f, O1 w{
9 d! G% X9 G  ~+ H. Y        cout<<i<<endl<<j<<endl;
* @; J+ N2 s- n: b) g& y+ l}+ S# u% g" g; u  S+ p( {# R. X

# ~# ]3 i8 ~- ICA::~CA()! j" i- e0 X' Z* {# N6 o; _
{
6 ^0 h0 U. X" Q1 [}
6 l+ Q3 ]! s6 B& Y0 v5 M* f. }" ]* m! R" D+ A5 o1 h) K
#include <iostream>
8 n/ G3 b2 v* Z1 ?; O1 Cusing namespace std;$ g9 |5 ^: H% g0 |& d8 x% i
#include "复制构造函数工作原理.h"# G0 V5 D- g$ p( b( i* p+ ^% T; {
int main(void){        ! K8 H. ^9 A: X( q
CA a(2,3);        
; K, T8 Z9 b% B* _5 q' b+ Ya.print();       2 M" ~/ c( c" m- E
CA b(a);        8 ]8 Y; M& ^, C3 z3 X  ^+ S
b.print();; w3 r( s% g+ ~% @2 A
       . J2 |6 t6 T9 U! j
return 0;7 L3 u) h. ]6 s/ G
}1 d+ j# i+ y7 E1 K0 M

. ]# i6 b" X# h! n
0 t" s8 O7 h! [3 b
4 }6 n6 O# x6 @) n" i
, O/ z4 J: G/ _1 s6 v5 q4 r  M
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
) y% c6 g  O4 G+ u1 A4 I+ h1> 初始赋值时:CA b = a;: W- m3 S& e) N+ D
2> 按值传参时:void myfun(CA ca);
: x" W; m' ^: Y+ X6 u4 E0 g5 S3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
- T2 {! v7 A9 t9 V! H9 |复制构造函数在以下几种情况下调用:
5 m# l+ K3 S5 m( J! j1> 初始赋值时:CA b = a;) R( `) ?% \3 Z1 p
2> 按值传参时:void myfun(CA ca);
! X8 l; Y4 i, y4 p- {" X
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-10-22 03:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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