鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 7 W$ O0 Z  z% F# J

; }0 a4 k5 u* {6 R9 Cclass CA4 k* ^9 Q8 f0 h
{
  L  U; O# R( ~  |$ z% \8 \public:
7 Y" G% r, J) J4 F        CA();
& b; v4 w  e0 H2 [' ^/ r, n- y' @( _        CA(CA&);
; t5 [' p2 D5 R- s        CA(int ,int );( @5 p% V# x+ f2 Y2 ]$ F* z& B: H
        ~CA();' P! k2 {7 Y+ L% y6 [
        void print();& b4 p6 C4 Q: i' ~4 `8 l$ x1 j. L

# p" }: D3 e6 aprivate:% o" s$ X7 W( d3 C" j0 u5 ^! Z& z
        int i;
! g9 ^9 Q3 h  z: S/ J% U9 s0 V        int j;
# v, M/ p) M0 D};
: a; B) ?1 a6 W3 B3 {  K, Z" ~" v7 n) p; H$ b$ i7 c- V2 C
CA::CA()
, Q' T, f6 n$ I$ v/ {0 e" o{: D: b- V& @; i+ s; m& Y
}6 V. A! B  n8 Z

1 E2 u+ B) h9 b8 W8 l7 LCA::CA(CA&one)' ?8 e1 v5 R3 @0 c7 X
{
8 `6 ^$ Q4 o& [* a, f6 r2 l        cout<<"调用复制构造函数"<<endl;: A+ l0 a$ d  F
        this->i=one.i;
7 F! T+ Z0 o9 H' I        this->j=one.j;
* G: S9 p' ]9 B$ ]8 R}* ?/ j! a: R4 V# J4 }- V
3 a* e6 n( Z/ z% s4 W
CA::CA(int m,int n)
8 Z  g. \# p1 X1 s/ H{, T. C1 X5 ^! Q2 g5 n
        i=m;
& |5 z, F7 s" W) ?& H, J* q        j=n;# ?1 J% ?8 }! S% R$ G5 ]
}0 ~; r& I  @  u9 k9 D+ _" j: ]3 }
! z7 e3 g9 G1 ~: ?1 r& Z4 x) t! T7 z
void CA::print()
% V1 {2 k2 ^" G: B" j{
- [# X+ H4 R" ?9 R        cout<<i<<endl<<j<<endl;4 }- N0 H. G: V1 l! h/ |0 c9 D
}# t8 @. v! V* ~8 \+ w. q! D
& G1 }9 q' n, s# `9 I: ]
CA::~CA()
" X, P% V6 F- t0 m0 @, D' K{5 @/ b: c% @! ?1 O: D) d7 k
}
. {- P' W$ O2 q" c' L( O- e* H" x# t  J  N2 y" c0 @$ t
#include <iostream>% d& m8 u* X+ H) B6 `, J" E
using namespace std;
* G! j- a; @. W; N" `% `5 ]& @#include "复制构造函数工作原理.h"  p* C, l$ y( q$ m7 ?" _2 z
int main(void){        
) y$ L, K- i, Y1 G$ D4 X# {0 {CA a(2,3);        8 ~1 }, _& D; v7 {+ O
a.print();      
2 l$ S& j- g4 X, d6 t CA b(a);        
3 S. C" B- _: kb.print();8 }3 M$ S. b, R$ t7 `: U0 U
       ! }* B4 ]0 I( d9 T" G  o
return 0;) T7 ?/ i+ t) ?
}
, r2 B4 H/ M8 w$ P
9 K1 Y6 E4 }  x; P) ]! Z' i* }
/ G' D6 r0 O4 H# I
: e: }  }1 L" J5 f% g! i! A8 g1 |- u4 H7 w% h# _+ t
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
: F3 Z9 R6 I. R) @" n# J1 Q6 @1> 初始赋值时:CA b = a;
% Z4 `  c2 f. |1 K5 J2> 按值传参时:void myfun(CA ca);# e! S/ B2 j/ m1 T2 y1 d0 J
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
9 w7 s$ ?/ U- s: a& T6 w+ |9 @复制构造函数在以下几种情况下调用:
+ b1 P/ b0 f& p: v# R7 Y1> 初始赋值时:CA b = a;/ ~. r0 Y8 I# I
2> 按值传参时:void myfun(CA ca);
9 B; o) l( Y1 K! n- f( `9 c3 ~1 L
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-4 14:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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