鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
& l9 z- X7 Y4 L% U. c- ^9 q- q' e6 u; g- C/ P
class CA
  \( \4 ~. M  S# o{2 `+ a% e' X* k4 L+ [. X
public:
! c! O0 v( m4 U        CA();) n4 e, N- f/ [8 E: l" I6 O
        CA(CA&);
( O& C+ X* ?, Y! {  _' v        CA(int ,int );
5 C" o" f- P; s# ?* S        ~CA();9 C) @  \: [3 I9 R' H
        void print();
# f! }4 f5 w% z  X% W# s% {1 k
- D6 k0 a& e8 x  o' ]1 {private:4 \( i* n1 h' K/ r4 j
        int i;; {" |5 a# y  J
        int j;
5 g, D$ U% V8 G. K. @  c0 q( ~};
6 h7 k4 X5 Y3 X3 H0 t
+ ], w: B0 E! ~9 x) kCA::CA()8 E- r' l# G. K  T; |
{
( e5 m0 q0 w1 e* d, u}
4 Y3 H0 s2 h1 L0 {( K( d5 b% V  ~& g! z0 f9 \  G+ R
CA::CA(CA&one)4 Q" X/ H. r7 ?7 v& e0 o: d6 m
{. i( P. y6 W& I2 y# p) T  s3 c
        cout<<"调用复制构造函数"<<endl;
# ]) L" i/ g$ W8 v* {        this->i=one.i;
4 O( c* |' L- n" e' x6 m4 l$ ]        this->j=one.j;* n2 R+ f! N5 t, ~
}
1 W& X( V& E) m) N% O2 }7 S) r6 z2 E- n) @5 V8 H7 B/ v% E2 u
CA::CA(int m,int n)+ x& I- ?+ D/ e
{
/ ?* D3 Y8 ^. t  D2 g: x1 y        i=m;* u% Q; R' F# L6 T
        j=n;
7 P9 B, X8 o" ?( K/ e7 ~) B2 `7 g}
0 b: m. _) v# W6 g" N" N9 q5 t
) l( C" g; A# tvoid CA::print()8 h1 [& {/ Z/ s8 q+ @9 c
{& I- D* n, {! G( @
        cout<<i<<endl<<j<<endl;
5 ]# P  C' s! y$ J}: g% Q" F- X& l' q0 `6 T

2 z( C; P2 G3 Z4 XCA::~CA()
3 Q/ c6 c; l# E( s0 L0 `{# L9 q# A. j5 U" m/ A; Q
}
0 n2 [5 U9 u2 }& x9 |
. T/ ~  K. G1 q& r#include <iostream>) X* D! Y4 ?( R2 n
using namespace std;
6 F5 x+ o' v; t: y#include "复制构造函数工作原理.h"
9 Z- Q1 [& D: g4 b# b# F0 j  I5 Iint main(void){        ) ?( d/ s8 _" N1 h" z- ^
CA a(2,3);        
  h- T6 _* p& ?% D* Ha.print();       - g! m" _5 ?- `6 I/ r9 i, N. `
CA b(a);        ! o: ^$ y7 I0 Y+ X4 k+ ?* }
b.print();' G% J- w* D6 ?7 W- X/ ^' b1 ~. y' c
       & ]. l5 F3 B: \
return 0;8 n7 l! _8 D- K2 V, G) Y! _
}
  W- d* R' `) }2 p1 o# X) z: k7 U) C  @8 h! n! ~1 X5 h
+ X( x" [% w7 v5 e- z
! l$ @. ]6 _6 ~
9 a+ C% t- u5 s) q  p+ U" P
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:$ J" v% c6 ], ]9 e- l, c, H( r/ d
1> 初始赋值时:CA b = a;
) v1 M# U  p' |! x' e+ Y( l2> 按值传参时:void myfun(CA ca);5 R  W0 c# k& Z: P. c' {
3> 函数返回时:CA myfun2();
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 : N) s, y4 u$ c, X! D8 a/ x9 d
复制构造函数在以下几种情况下调用:2 I/ |0 g. G# e  }0 U7 y# t  F- C
1> 初始赋值时:CA b = a;
" b5 d4 j6 a" I/ E- `- O: N2> 按值传参时:void myfun(CA ca);

, w. ?) c: F/ n) K第一个应叫初始化,不叫赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

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

GMT+8, 2025-2-21 03:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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