鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
- w1 M+ `+ m. E3 T1 d$ B# b5 m1 \  S# m. u( Y3 P+ J2 V- s& J
class CA
/ h0 r5 N* V2 c( X1 x$ [# N{
) G: a8 i' b7 W/ |7 o7 Z3 [public:
) e4 D/ Y, h5 G' u4 n! ^1 m        CA();
+ \1 V  P. {4 E+ }% t4 J        CA(CA&);
; h8 m4 j4 X, o9 R' a1 K7 S+ I        CA(int ,int );
. w, S/ g9 F# S% P; d' G" A0 ]8 _1 F        ~CA();' P  i1 S* E1 M2 O
        void print();  p( s2 O. L2 U+ B0 _5 a9 i. w0 Y

8 \$ E) T* p. S  r; o$ L* Hprivate:8 x/ p9 O0 Q0 U
        int i;
& I# C. q: _' \        int j;# }$ l# x( u' J
};
3 N- D0 i  w1 S1 a( j0 ^3 W" L* m7 T4 D
CA::CA()+ T. L' ]2 k6 r% f) q) p
{# Y! V+ J! n  X* ~% e: e% R. T  b( @4 u
}% Y* c' ?( m+ o0 e# S# N4 W/ x- k, d
6 K- H/ V/ h/ `# e( u
CA::CA(CA&one)
. d6 S. q' A" H$ w0 j( r{- `4 i/ ^' s! o: d
        cout<<"调用复制构造函数"<<endl;
# ?: D3 c6 e* I. j1 J6 h        this->i=one.i;- h4 Z5 @" r" M  ?) q: Q
        this->j=one.j;
& G; {+ n. n6 w$ ?  |# S  |}+ F  i: B: D5 _! h; W

6 M: n( W/ y! W+ ~, l. x8 U% HCA::CA(int m,int n)/ x# I. ^! ^1 t6 ~* k: |! b+ ^
{* E5 T; U7 r: s8 d6 y
        i=m;
; k  K& P! k& r- T; R6 E        j=n;8 Q2 ^! n. E7 Q6 d6 j
}+ ?" D' Z1 c1 M! y. Y! ~0 j

5 j' @" v* T# m8 N! H  X' q2 D6 V) d3 Xvoid CA::print()
3 ]! W8 V& v% S3 f{: [+ _+ K; F! C( S& c
        cout<<i<<endl<<j<<endl;3 H- S; g. Y4 q. w6 @% t) x7 K* ~7 n
}
6 Q2 c  _+ J: r( t8 f/ \9 \( c) s( H. i, @8 e
CA::~CA()
( v, H9 d' Y# n; q) \{
7 g8 L+ P: P" r8 f& [) ^0 E}
( o5 s1 c5 C& i/ l( \- u# b/ o1 ~
8 u: l& o1 M1 N#include <iostream>& p+ J% q6 i6 b* b4 w3 r
using namespace std;0 I) F- H6 A1 ]$ d! z) J1 h5 d7 Y
#include "复制构造函数工作原理.h"8 K  q; N9 P8 Q9 z5 `
int main(void){        
, y: l, ~0 g/ a6 TCA a(2,3);        $ v3 {/ _& {6 P, ], R4 {" F2 T
a.print();      
9 U/ O0 }. f/ d' x4 ?6 i! S CA b(a);        
5 Q) d3 b: G& y8 t2 N0 u; db.print();
' P4 z  j4 p* V       4 ?, T7 E* n  L9 X+ N5 P; w! m
return 0;
3 O: V  K7 v( B8 ~}
5 ?+ t; n' |1 F5 S8 C0 @0 U4 n% W
% R4 m) ~9 U9 m" ^
) c+ h% Y" m# L. g3 w- ~

3 Y, ?3 `" B; c# t' d
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:7 ~2 M- q. @7 b: _7 l/ N
1> 初始赋值时:CA b = a;: H2 [; O( s$ w- g" g2 N
2> 按值传参时:void myfun(CA ca);
$ F! l- `- f& S3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
6 b7 ]$ q9 L" v; U/ M7 y复制构造函数在以下几种情况下调用:( C* T0 M& d/ ^: }  k1 A! _
1> 初始赋值时:CA b = a;
  ^3 F; ?  d" _* J$ g4 c2> 按值传参时:void myfun(CA ca);

2 q0 }/ X' O. O5 }3 C  i7 ~第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-8-20 21:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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