鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
2 d1 S% H5 z" K  g2 F. H5 h
3 g2 |; D1 D! K, T% ^class CA
( S) K0 k' [  R! M$ e{, V6 n; z6 e, E- z+ \- a
public:
; J2 h. G9 C7 y, {- x! p" V        CA();( d+ E0 ~' v2 R$ A1 a! H# D
        CA(CA&);
5 h/ x) j7 s1 U/ F/ Z2 A, i* F        CA(int ,int );/ c& S9 p7 w- o: X/ ^& c0 r
        ~CA();
5 X8 x/ \! ^% N( v$ B        void print();
- [7 j6 i/ r! c/ h: H+ X- s! R. d7 H5 j
  U& H3 {2 A. Wprivate:4 n" M/ v# x4 F0 ~5 |& s, ^) l
        int i;
; k& s" w  ^% j, {  p        int j;! T7 |( |! h; i0 H' d
};( H$ t2 U& Z/ x+ f6 R7 O! ^
! ?6 y3 q+ ?5 u0 e% a% M
CA::CA()9 z/ R# \' K3 j2 j8 y
{
# U$ o- b' |( I' K9 M5 m% B8 F% k}
0 e0 p6 G1 _' ^. S% S' u; z  p. _& l7 Q/ M
CA::CA(CA&one)3 p! E% t$ P' N; X. w. m
{
& P3 ~# V2 P0 }2 z4 L        cout<<"调用复制构造函数"<<endl;3 j% z/ V* o! o2 @" c3 [% s
        this->i=one.i;
; V+ G/ s: ]# E        this->j=one.j;
( L/ u* n/ \6 f8 \}- Y. _* S1 `, Y) B- ^
, A# o" p5 r. }3 F  a- F& V
CA::CA(int m,int n)
- }) p7 W" V' r+ q& O0 K( d6 T{
% {+ P+ ]4 r# @" P) S4 ~& }        i=m;
& X' N' K. E: i; X0 [' s( E% Y        j=n;* |, W1 j8 h% E) K
}
/ q9 q! \2 u4 _, D* W4 ~3 W
! t2 H- C7 I" T0 g' e9 _3 Z7 Zvoid CA::print()
& b; ?" H" X( ~4 U: S{  r8 X3 h: y/ p1 k6 ]& r
        cout<<i<<endl<<j<<endl;  U/ k( t) m$ R3 E: S" W
}
4 O: R- d4 n' h* ?- }& s6 p8 J% N% k2 X
CA::~CA()4 w" u. Q# G) f: `
{
9 `4 L- ^( @; V}
4 t. a  x  t: D$ P* ?
  l3 _0 j, A/ y$ f8 h% b#include <iostream>  ^1 N: r, F( S
using namespace std;7 w; K; W! K! P4 X7 t: a5 v& r
#include "复制构造函数工作原理.h"
8 V  A5 L9 t: h2 C' f- oint main(void){        : H1 _/ d( ^& ?, a
CA a(2,3);        / m! J6 X3 `( h& X0 Q4 N& x) l
a.print();      
& W  O' d( g9 {, G# L; m CA b(a);        
! k6 |9 M6 @6 \( c# X+ `  y6 hb.print();
2 U) J. @4 \2 \$ w& [4 |& J7 h      
4 q1 U. n% _1 J: {' D return 0;5 I* x; W9 \' v/ }* s  j  ~
}% t7 h+ n; ^7 j% x

9 t  s: F6 c. F- O
2 {. N' x" \! T' d2 w
) N. I" ]9 Y" N, Q
$ q$ o3 e) R* X* ]
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:( Q" b* V& R. Z: b: U+ d
1> 初始赋值时:CA b = a;
$ Z, G; ]2 `2 r1 r& Y5 P* ~2> 按值传参时:void myfun(CA ca);8 W; G! h3 d; N
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
/ \4 |/ o; A* `7 y9 \) ?, o8 o2 M复制构造函数在以下几种情况下调用:6 k' M1 H/ }7 P6 s: I/ l
1> 初始赋值时:CA b = a;
$ R. i- f# M5 U1 [2> 按值传参时:void myfun(CA ca);
7 n0 z2 a6 u' V2 S5 L
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-16 14:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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