鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
9 q) T0 x8 e# P% }, L/ Q' o2 a. C! ?  A8 x  H3 t# W+ P
class CA
  C: E& g1 d" O" U' ]{
: O+ D! x# Z+ |& |3 O; G  Kpublic:
! t  p9 F; d( o3 [. O        CA();
, Q* r- c" j+ h# _. U+ g        CA(CA&);
+ X  E, m, K$ i7 t: L0 Q        CA(int ,int );
% c7 W6 I$ w+ w% x! w* h0 s0 v        ~CA();9 l! w* e" b4 _' s( ^/ {7 W8 Z
        void print();
' `; r+ E& O: S
$ N0 r1 v* v" Hprivate:
1 R" R4 D: N+ f% Z; u! F) U" G        int i;4 w2 e$ G6 Q, H  u$ i
        int j;
/ d' ?$ g/ X% n; m};( f: Z9 u9 u% s0 |: H4 |$ j. @4 A* I

, r3 a& e; M. t; ECA::CA()
$ Z# f6 X3 V" a% Y2 R5 Z0 P{
2 o# V& K; H/ Y}
' z- J  J, E0 ~; j- n% V, w% [, C9 j! v4 p0 |' T
CA::CA(CA&one)
6 F! @" f  s' n3 h2 R{
% r& r4 [' z, d. _, B. c/ B, K6 D% e# u' R        cout<<"调用复制构造函数"<<endl;4 R  ]7 U' j! x9 L0 W8 e
        this->i=one.i;; Q+ N) H) h4 ^  e
        this->j=one.j;
) n7 J6 P6 z; X3 @( f}
* e% T1 F$ [. p) w0 a6 h( B& E; q
CA::CA(int m,int n)8 E) |& y& ^5 {! E, i7 F3 _) s
{' O5 S' z' s* `" u# a/ N7 Z5 W
        i=m;
, G! `1 S  t: I        j=n;: m$ h# W/ d# s" D& H* k7 t
}
% b7 D+ u: R6 P7 t5 G
" Y6 B4 h3 Y& p. Xvoid CA::print()
& v# F! c: X/ `1 Z9 x6 o{
6 D5 |8 v7 C' M" x) ~# {        cout<<i<<endl<<j<<endl;/ B% L/ E& C% q  k$ ^6 x
}8 Q3 y7 j  g4 {+ b
# s) G' N5 `* S% b- Q3 s
CA::~CA()' i; ?2 H' r  W: i1 D
{
5 b1 t5 Q- h: u0 x}+ `. m+ j- I  d! O+ k0 t

& @* c. T1 |/ b#include <iostream>
* b: n8 ]" J+ _9 zusing namespace std;& p) B. }9 V6 ~1 R
#include "复制构造函数工作原理.h"
) m7 ?3 w" X1 r: l, mint main(void){        7 g* q0 S- W- i, Q
CA a(2,3);        + T9 E1 f6 h/ c0 v
a.print();      
1 ~' ?* g( a# `( d4 f. E$ u CA b(a);        5 K* L% e! L0 m6 b
b.print();
; v7 b4 c) D. {7 X# w8 B6 `. F, L      
# O2 D% j9 w5 h, E return 0;$ K6 `* k) H) ]* i; _: x: R
}
; M1 R9 K8 w  _3 ^
0 o  d! T& H) ]1 V* d
* N* ^( q7 u  K: i, W/ g) o
3 R3 X% y( j' Z% L/ R
' F  s" p* D0 H1 U
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:4 M% z) z6 S' X8 D7 o
1> 初始赋值时:CA b = a;( K$ J9 j8 B9 j
2> 按值传参时:void myfun(CA ca);5 H, k  v8 L6 I  o9 K8 ?
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ( Q# C, r% c* F; f4 H/ D
复制构造函数在以下几种情况下调用:
9 K) z; u- ?3 h  V1 r1> 初始赋值时:CA b = a;
7 A- \8 x- G1 C( {) u1 j2> 按值传参时:void myfun(CA ca);

4 x( H; K7 ~! J; ^+ H第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-29 20:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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