鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
: J3 k$ o$ I1 d4 n# g: X1 D! ]' b: c
class CA! R2 h7 X' D; g4 s" A
{
6 `/ e- Z$ L0 i/ x$ T. ^public:
# \- R7 Y: H, I+ C1 O        CA();
* g( ^9 |/ _. m  D* C        CA(CA&);
% L$ Y1 x+ b. B! W+ ^$ m        CA(int ,int );$ v6 k# f/ ~8 Z; N9 W" ~$ S
        ~CA();6 f9 F! l$ q/ J8 s7 t
        void print();
# c  p# ]+ j* R6 z8 y* ]- r# _6 W% {4 I- W. n, m! {$ s
private:
0 C" X5 h# R9 }% Z& C        int i;
5 T+ f9 }2 i" ?  u4 F  X. F        int j;
2 k1 q) [3 [; Q) G};& T/ \9 Z) j1 K7 Z! p1 U" J6 }
; P, {+ V6 S- H# z
CA::CA()2 z. H; X8 u# [/ i' V. M
{! K6 K* }* D; `
}* s& C  Y9 [7 V5 S0 e; q9 W+ s8 i

. J9 e; B7 x# U5 A" a5 s0 [: g4 HCA::CA(CA&one)
& f' _; |% e" Q; X6 c4 r{
7 j& B; m, `0 A' `' M        cout<<"调用复制构造函数"<<endl;
. w3 e* x: R+ Q0 J/ o        this->i=one.i;
  W' W7 M  w. d9 y! E5 o$ v6 o        this->j=one.j;- b% ]$ C- `1 m6 v
}
! d! l* C1 p( n5 O
! m- n" @3 L# y- w4 HCA::CA(int m,int n)
1 y8 |1 e! R+ t2 N{
3 `2 I5 F7 S4 Y9 `/ S0 B        i=m;
, ?, I, |: E1 P6 D) `5 [8 W        j=n;) k0 T6 Z/ f, v5 C& t
}, Z$ n  M8 A5 \! O9 u$ F

) ?8 x/ s/ p/ {void CA::print()8 ?# l2 v. }+ s- S1 U+ Y5 R
{; z5 A8 g, V& A' P5 W0 C' K0 ^, x
        cout<<i<<endl<<j<<endl;/ F! {: V/ O$ g+ A! a0 q  l
}+ P! n. o% B# s! j! @0 e9 h; h: S( H. @
9 ^. h; e9 f+ _" L- Q6 ?
CA::~CA()
0 {" g) B5 Q1 J6 e1 ~+ x$ F0 ?) S, v{
( S- h$ \! r1 d/ s: p, I, m2 `0 Z}/ f4 p' E% \  B6 M! y
: S+ z! C" ^5 j9 {
#include <iostream>$ }$ v9 A; s: V3 n6 o. ]8 i4 q
using namespace std;& [* E* E. P: D1 s: U& p  j
#include "复制构造函数工作原理.h"
1 j  t2 c% s; x/ ~int main(void){        ! G# @" Y# Y$ {2 ]) y
CA a(2,3);        
+ g) g# O6 z) t% p. H6 ], K4 pa.print();       ! V+ U. p: B0 A7 ^9 S1 ]
CA b(a);        
) L, A2 J6 P  t* F) W  W6 cb.print();
! y& X. M" W% D: i4 @. m6 P       0 u& Z9 p1 P# c% p5 A$ _
return 0;
% H$ T( R, ^' ]2 Q5 P) M  e, a}
) N3 P) r8 z' Q/ k2 n: a* y( h$ L* [) f2 V! J% s& |0 W

0 @  h+ E2 E" H9 k, Q8 _; Q. B
  U$ G& b8 w& I0 ~- F
0 S: r1 x2 k# e) i+ N0 {0 W
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
2 B9 ~( H3 E# c: ]1 S% y1> 初始赋值时:CA b = a;4 X0 A- N9 H0 Y0 n
2> 按值传参时:void myfun(CA ca);: V; G8 U8 E7 P( a6 ]! U# [
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 5 w  c  x) {7 ?
复制构造函数在以下几种情况下调用:
& e: P* B* A! ^! d' F0 g3 t- V1 ?1> 初始赋值时:CA b = a;
6 X5 m- ]& u) Q9 K5 f. Y8 _2> 按值传参时:void myfun(CA ca);
+ {. ]0 q% ~: w% D4 U! a
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-22 16:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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