鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑   n  S  c! a0 x
3 f& Q1 ^% n: E% `9 F( I
class CA
. a) _; g1 ~( y3 i, k{. q7 v! @, }9 K
public:
+ H* }' ~0 R* s  ?' I! m        CA();/ t5 z/ V6 r5 {; W
        CA(CA&);
. J. N' ^3 m; }. T1 b        CA(int ,int );) J: Q) h3 w2 e: q7 F/ X
        ~CA();
) F( @0 @0 _: z) }3 G+ v        void print();
$ i. W( u2 q+ z/ `6 x! Q( B3 x+ m/ ^8 i2 d2 L2 y
private:
+ b3 W7 p" J1 Y        int i;
) u5 _) M  y& G' u: k* S" _: G        int j;9 Q! o  O: s7 v& u
};
/ k5 p' s9 C4 B& A+ {8 ]% V/ q; F) M' M
CA::CA()) K4 w: B3 c; R
{
1 @; `: k4 y; j( ]$ l7 @}. K; q3 H' _- H1 G0 ^5 H; z! `5 r
! G7 t. S6 o& {$ u" W
CA::CA(CA&one)
3 i$ n- V5 p! T8 \2 @+ s- d{
2 z) M" Z; e, O; d' H( z% r3 _        cout<<"调用复制构造函数"<<endl;7 d. s" ~6 l1 l# [5 v3 d
        this->i=one.i;% G$ l& V" G  n0 |
        this->j=one.j;
. g; m2 M( A6 m}2 h, y5 `+ S" C8 I0 f$ Q

& o+ e4 Z1 A. ~9 JCA::CA(int m,int n); J. i7 b4 n6 f% Q) y" N
{
, j* B, D3 l0 q3 a9 C        i=m;
/ A( R1 C& q5 i0 l0 }7 u        j=n;
# d! }; n; ~, M2 U}
" w$ J  ?! u+ x& x2 @- ?
; w* `& U# O/ ], ?) s, \7 p& Jvoid CA::print()
7 T8 g; a5 [) m5 N7 [" j0 E; y{. q) u2 m; t! G' @- m
        cout<<i<<endl<<j<<endl;2 s6 _1 r, `5 m% U1 p+ D% w1 v5 I
}
8 G% x% T: X; \
4 o) g1 C1 r1 ~1 XCA::~CA()* \& X: R! `: o" i. r7 a4 Y6 q
{
7 u! z3 `! p6 f. T* C( q, m}
, ^) p6 q7 r: |& o7 C3 w9 m" U$ [2 Q& J" B
#include <iostream>
& A6 a& u! Y& S6 ^4 n9 l- j/ gusing namespace std;$ N  C; r, \, g/ Y! N2 N
#include "复制构造函数工作原理.h"
, Y0 |9 D/ }8 b1 T/ ?3 O8 _7 Uint main(void){        
" S( g+ e/ w( M' M! T" G$ QCA a(2,3);        
+ A7 p+ d7 M$ l" ha.print();      
' g2 A& v  h2 t+ Q CA b(a);        1 s8 d/ u) u* k/ f
b.print();
9 U* y9 K) ?, H/ ?$ S& l5 f      
  S9 @) F9 W' I9 l* q' K return 0;) `5 [, A$ e. q5 M, y, u5 ^
}& a, e1 J/ y6 v7 E9 `& V8 h
: }3 f) P. }4 \1 @& g
1 T# I% C  z; k7 j+ y3 ?- ~+ |
" q0 O6 P4 y% z# [" u

/ ~$ x7 M' O% g: m" p" W
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:, g' B' F8 u, T/ O% \
1> 初始赋值时:CA b = a;3 F* m% L" f' M" p7 G$ e
2> 按值传参时:void myfun(CA ca);. C, c6 O  f" F! F2 ?0 n7 ^) v
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层

8 q' z4 m7 S' @6 e: }- r) X% ~7 Z第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-23 11:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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