鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
" m  R' P7 l$ z" ?* [
/ b) s1 J& A  ~; `1 f$ cclass CA, {( j- E% Q, X, b' G( W6 T
{
/ o! y" @3 y# {* |4 r- O& X7 Kpublic:+ N5 N6 T% [1 X, g
        CA();
' _3 F4 D  L. R. x/ Q# Z        CA(CA&);
4 {, i& u' `1 g: ~# M) T& w. J        CA(int ,int );
" m9 [4 Z% o+ ~% _5 V) v        ~CA();' M, j: U% h+ n) t' ^8 C) k
        void print();
3 j- D& k: U0 m3 d( P+ \' ^/ g. d2 i
private:
! Z" P/ l6 E* \8 O/ A3 S; ]! j        int i;; S% ^0 I6 P# {$ R2 Z
        int j;
+ T1 g2 {' g6 K/ V2 a};
4 Z  N& ~3 Q; D( x) J: R* c) j/ G1 ]
CA::CA()
8 w3 n3 z9 f% c* K. [0 P  n{1 s. l% Z; e) |7 k2 r
}
" \# Q" y' c8 |9 B; n; @
6 W: R) S" u9 N" hCA::CA(CA&one)
; j6 Z. K  o, j8 @( I# G{
$ W8 ^& Z0 R+ t5 p" y" o$ B* G        cout<<"调用复制构造函数"<<endl;- u$ `3 j4 x) W: ]7 U0 P1 t& _
        this->i=one.i;
+ V' d8 I) B5 }; t        this->j=one.j;2 c9 ^: w" s7 v* L5 c
}
1 [- G$ @' W. M! P3 c7 H% K( ?" o4 N6 O2 k
CA::CA(int m,int n)
  ]* W$ ]. ]2 Y{
5 s! g! F2 w* i! L8 q6 ^        i=m;
) {" I: o5 q7 m# P& N% O4 ^# Y        j=n;. g; q* b% Z& S; `. z* U
}) k/ @' W9 d* W
# g( Z% k, t/ A- J$ A8 [
void CA::print()7 N8 V# V2 Q0 u7 ^
{% a* I1 }! ~' [
        cout<<i<<endl<<j<<endl;
; o. c0 V) X, w% g! X! b& `5 U}$ E- u: p( J0 r, v, n
$ b+ Q% F, X7 \, b
CA::~CA()
( a9 ]- T$ K) R* z6 \. ^- d' S{" q2 k% Q( ^+ t0 J- F* H8 r
}
) \, x8 r4 O. m2 p/ L& [1 {! f1 ^; l. i8 }% {/ I4 W
#include <iostream>' Z# t% X% U, S# v
using namespace std;
$ \2 O8 q$ y' K4 v#include "复制构造函数工作原理.h"1 `& |! H, f0 Y
int main(void){        ! @/ r& g: h5 k1 L$ _; M' Q
CA a(2,3);        4 ^/ {6 t9 {) }  [) U2 D
a.print();       ' e6 `. w. ]( u9 M( d
CA b(a);        
$ @) M- J9 C0 Zb.print();
( f# x& `# `; [6 l, ~       ) `5 ?' G; h0 \& Z' y% j
return 0;7 ^5 q9 }0 R0 i, O
}
) q! I' J, x1 z- b$ D/ E/ U1 J3 ]; T4 o. u

6 J* @9 m/ t+ E' w. ^) ~& m0 p
6 @* O9 M5 r; n+ Q9 J  T$ ?+ N2 D* U$ ~( j2 L
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
: O9 M5 y6 A% U  H1> 初始赋值时:CA b = a;6 p( v& N9 ~* T( q! Z. {. h
2> 按值传参时:void myfun(CA ca);  Q5 F5 ]/ d  E& m! k
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
- \, w) A: j8 D! V" n' h) c* u复制构造函数在以下几种情况下调用:
" _+ J' R* v4 H. @6 y% E1> 初始赋值时:CA b = a;
! R; F* N: Y6 ]9 ~" ?9 X2> 按值传参时:void myfun(CA ca);

  x! J: O$ y/ c0 g% \. o第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-10-28 19:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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