鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 * |0 X$ }6 S& J, c+ V- o- O) p
7 o; A+ R  B3 t7 [! a( b# {0 ^
class CA( f) f% w7 m' H3 I7 f9 @
{9 O, z0 P) f/ R& a
public:
3 A' y2 N# |# E$ ^1 ?        CA();% ~2 s* o% t& G) X" p* p0 G$ N  e
        CA(CA&);+ u% o4 ?! o5 B- ^! I  d" ?  t/ m
        CA(int ,int );. `$ a# e- P  x( s2 s
        ~CA();9 D' V8 m/ t+ }
        void print();
8 ]) ^& q- a$ p% L) N) m
/ W& S, X4 ~2 }8 gprivate:# ~" q: B5 m% C: {
        int i;
( ?1 H3 }2 _, ?& b  j6 S. [        int j;4 O3 }1 I% U: C, @# h
};! b* T' I; J/ E" f
. N7 m4 ^6 v& s2 ?6 U. m" h
CA::CA()
1 W% T: X' h5 p{! L0 C& h+ h8 R2 o. i7 ~1 C7 i
}  p2 H. f! j7 h; M
$ i2 L0 ?0 w, _
CA::CA(CA&one)
: U4 K* F7 m; U$ ?; P0 C{* U. T7 L# o( q$ [
        cout<<"调用复制构造函数"<<endl;- a7 M/ e2 |" ~3 q8 D" M
        this->i=one.i;
$ b# x$ x$ S  R        this->j=one.j;
) Y( a; P; U7 _+ t1 E}3 K/ \& ^( k- }0 I8 X- g
1 L2 l. b9 H/ H
CA::CA(int m,int n)* |# Q0 x+ `: ]& x& m1 y7 i
{3 A& y' V. t# U  F
        i=m;5 p- l2 ]  H& H, Y
        j=n;
: c0 a7 [9 Z+ V2 F}4 I" x2 i3 R3 q* |- S6 b9 ^& ]- _& |
2 O* n  G( i, f% Y, |) z/ K$ f
void CA::print()) h- Y* `% i$ b1 i
{7 P9 [- O6 [% O3 L! t
        cout<<i<<endl<<j<<endl;2 C1 }7 z6 {2 W  C
}% |2 j4 p$ G0 X

, U3 @& j' j  x; z3 [' yCA::~CA()& R7 C% ^5 ^! m  `/ {& P) k# o
{
' P5 x' R5 N8 h5 s9 B  y# m}( p  {5 ~  {# V# g

2 a2 G* q( z5 G4 f9 [0 [#include <iostream>
; K" h$ g6 |9 E, Wusing namespace std;
! s+ I; s! p- I4 e! n#include "复制构造函数工作原理.h"
  R3 ?" M% R0 b8 G/ Mint main(void){        
& M7 u, K  ^! [3 M1 u  B6 tCA a(2,3);        ( |8 I4 P; `9 i9 S0 V
a.print();      
1 s% L) l. ]( b1 h; q3 }% ?, h CA b(a);        
: d3 J. D, x# S5 \- Ab.print();
  T+ F$ E0 x. Q# N/ i$ U+ i      
  K+ C: K) Q" q0 [/ z( Z; ~+ H! u return 0;
* m1 N/ ^. b0 f. F) P/ p4 a}
) E) B, T* h$ C* |/ C% C
  B) V* L$ C2 Z* A( I; S! o  r9 \$ Z* \: f4 P7 M0 \

% l" z8 Q4 R! v) P; T) K/ r* G5 c. l( h6 [- D# ~* @8 ]
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
5 V# F* i( ]3 [- \* c/ K, F/ X, M1> 初始赋值时:CA b = a;
7 g! Y  b' H7 n2> 按值传参时:void myfun(CA ca);* f  H% O) n* D/ G8 J* b+ K
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 " m$ y0 _6 ~2 p; A+ v7 t
复制构造函数在以下几种情况下调用:
9 P; _9 l2 L! w3 |$ m% \1> 初始赋值时:CA b = a;
$ u7 N2 w- V, Y2 D5 g* q0 }+ M; [- {2> 按值传参时:void myfun(CA ca);
9 {* M0 _( I8 ~, c' }' B& ?, Q
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-5 08:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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