鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
6 M' b) w  h2 T8 r: U  ?0 a' V, i1 C! A% Z* R
class CA$ M% c6 Z2 a, g- v& t; k3 p. r) O) G
{7 |) L3 R& q8 q  G
public:8 U1 a6 H5 x/ n" T+ R. H3 c/ Z
        CA();
: y* e5 w% c/ O7 p" N& y5 M        CA(CA&);/ Y' Y# @- E4 E! F1 s$ q) t
        CA(int ,int );
5 [5 I! f) `6 i. C4 n, O) z! s& H3 ]        ~CA();
! z( b1 j5 S2 }* E, f  D        void print();
# H! O4 l$ |7 `" L; B8 p' c
1 y5 l5 i9 T" Vprivate:
" P3 f* R6 S' J, f        int i;
9 X5 [9 F- o  \8 x        int j;
. Y7 z  C4 j& f' X- `/ Z};! h& Q% {: s* o7 U' D
1 \: v0 y* V" n& v" s* p# a
CA::CA()+ `) r0 U) O/ O
{  G! d/ `$ }0 U
}1 c1 {# F& I/ c7 T$ q

/ ?1 I: B' ]! n9 D. S3 uCA::CA(CA&one)& X2 N) o; u4 Z# {; b6 u& u2 ]
{
3 x6 W  D* n; ^5 z3 o( @        cout<<"调用复制构造函数"<<endl;1 w+ d  g3 P8 P! k
        this->i=one.i;/ A- L# Z/ X, S5 H; h
        this->j=one.j;
9 D' d1 n; {+ N9 `}
2 ?4 w  `$ v" D( \: [0 v. V  |- ?8 p+ p' J( W" B
CA::CA(int m,int n)" i) F' y" U( N9 |
{2 n* p. I0 ^0 d( y
        i=m;
! P3 J$ a/ \: g, S% ]# G4 A  y        j=n;
2 L" q& J8 g) c( t- X6 A}/ f, I$ d' ^+ h" g7 [

) C" R7 |, `9 z3 D& a+ xvoid CA::print()2 B# R) o: N" d
{0 ^+ L" b6 L, y. ~4 X. \0 R
        cout<<i<<endl<<j<<endl;
! I5 m- m6 R' y% @4 m$ ]3 s& [}! p( D  z9 B" T$ @  X" k# v6 E
4 x; r) S( Z7 _  s* b- E
CA::~CA()# {$ R9 l# ?& ^7 W7 `  j
{
: b$ w. r' q" @$ E}" `2 R* c: M* }. Q7 D: H

' y' d% l6 M5 P#include <iostream>6 z9 N! k. @9 w7 y  k* Z$ g
using namespace std;
6 o- Q: K* X. a5 g8 E#include "复制构造函数工作原理.h"; ]) s3 Q' v8 i* p4 i
int main(void){        3 p- P5 H: ^3 e! ?
CA a(2,3);        
+ V! m* T7 w3 a5 ma.print();       % D4 A' g' E2 B8 ]
CA b(a);        . l, H$ P5 S" Y! I  e+ l& O
b.print();8 \; J+ v: r2 r& J
      
0 v- s2 X) X9 P; H( w2 L return 0;- I8 L! c) K! C/ b7 M) J
}0 a6 S, Q# R& p7 [) {6 k: k7 s

1 R! i8 D# W+ c. t/ f
/ J. D- J4 l) v& h
1 a4 |9 i1 ]; C" z4 B* {+ g! C8 z9 q/ p8 P$ [% O% _0 {9 X0 J5 t) K
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:( b) Q5 y% _$ m& @1 t
1> 初始赋值时:CA b = a;
9 z5 ~. Y& P8 i! I6 K8 j2> 按值传参时:void myfun(CA ca);
; C3 X, T2 K, v# z7 E( @# c, f3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 1 Q: u% j% M% |* W. a8 ~
复制构造函数在以下几种情况下调用:
: K5 p4 m0 s3 d7 T/ F- n1> 初始赋值时:CA b = a;! N$ R3 D! h2 a: q9 z# n5 U
2> 按值传参时:void myfun(CA ca);

! M- W$ o9 K% k$ ]4 l/ y! j  l第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-12 11:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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