鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 $ c5 L+ c# _0 u( L; r/ r0 h1 W8 _

$ V+ b7 T; H- Xclass CA6 Q: W4 z  @  w1 Y1 K, M4 k9 X
{9 l( E" f) }! f0 G- h
public:
. S7 |4 K  p/ B, }! S( Q6 n6 m        CA();
) z: K& N% g$ D9 j; z, _        CA(CA&);( ^" i: R8 \2 _- s
        CA(int ,int );* I: Q! P7 L  D
        ~CA();
, l8 Q9 K# @* @: A        void print();6 ?% @: A6 T* V# ]

1 G6 ~6 ]! a; K4 qprivate:4 c) o# g6 K# S% e7 F$ D& n3 e9 Y1 `
        int i;0 @. [# G: ]* d5 k; {9 G- L
        int j;
: V. f$ J! y; J6 A};
$ ^9 k+ w) y1 F, ^- }4 D, z* |2 z: P% T! t8 j7 H1 v6 [2 M7 \! [
CA::CA()
3 W2 N. L5 V" H  w) ~{
) p7 P; i0 a0 f3 O6 a4 l}" p  i: X. r/ N, M8 o* ]
" s5 {, A8 g- y4 B
CA::CA(CA&one)
- h: E' J, N3 \' S' s8 b3 \{
% v% q3 W3 j8 D8 m5 D; q2 {7 t9 u        cout<<"调用复制构造函数"<<endl;
6 @$ c& e* r7 O3 e! I6 M        this->i=one.i;, O! y0 g% j$ G
        this->j=one.j;7 ?0 z0 J  \5 G. T. O- ?9 ]
}) I4 Z* i) P8 n3 a) X% _) a; M

7 F2 E! e2 G: A& d% lCA::CA(int m,int n)' O( A0 d* v9 m. |7 d, e7 S! _
{( I( O5 ?! W+ I8 V4 x- v* ]+ O
        i=m;
7 C: ^- d6 G) ~0 r4 z8 b! F        j=n;6 _, A7 K- L! c8 Q
}2 t9 m" `7 g/ ~# ]7 E* ^/ M) q
% ?" ?  U% h7 z3 C: \
void CA::print()
4 x# e) K  q& W2 {1 A: R{
5 R% R6 E; O8 U  A4 Q        cout<<i<<endl<<j<<endl;3 _1 m# B" w2 Q2 S4 V6 \- [
}
5 o1 i% k' }6 l5 E9 x1 f6 G& q& d
" q4 N1 n+ N: B0 z# K0 A3 Q, M2 g& x/ LCA::~CA()! Z/ N5 k# r5 I
{
1 \3 r& |  o- _( ^3 f}  j/ `# }) x4 w$ g* ~2 i
( N# \: P& B* {& Y3 Z, r3 O- t
#include <iostream>
! s8 d3 h" l9 c* Tusing namespace std;
0 p. v1 ^1 r7 A* ]#include "复制构造函数工作原理.h"
3 Z  H1 B, _+ _/ J5 C0 b* L4 Dint main(void){        
. Q" B6 Y7 J* lCA a(2,3);        ! z4 o* e3 X/ ?6 f3 c" `6 a4 P
a.print();      
' P1 K3 \9 ~7 w3 R) u1 Y3 ?, a CA b(a);        1 |( e8 {: Q: c) D; O
b.print();
+ `5 n' G; T! ~4 Z/ c. }' n, A( Z$ q      
  X  w% P4 g! c5 t& z2 H return 0;: @8 p, f6 t% q) A
}6 y/ E: ~) V6 V$ T0 y" L% h

" {/ ^* k- r+ F* K$ k- g
; p  p! D# W( B3 ~  h- p8 f. f6 H+ z3 s! r2 x2 ^

* U& K, `7 G/ Q+ E* i. ]+ L. q. o
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
, J2 V2 @1 v4 u" L  `, M' p7 K1> 初始赋值时:CA b = a;% j7 m$ E6 r) Q& _9 n
2> 按值传参时:void myfun(CA ca);
% B% v  W3 E7 r  R1 v! f+ R3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
" T' P4 M2 j$ `2 s9 c( p3 g复制构造函数在以下几种情况下调用:6 S( ^$ ]+ u' x' A: i: C
1> 初始赋值时:CA b = a;
6 a1 r4 ]) P& S6 Q2 @! Q3 Y2> 按值传参时:void myfun(CA ca);

. ?! A4 H( |* g4 v5 Z第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-2 18:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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