鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 : e9 z9 e0 L2 Z' k4 h0 l9 o

; N8 g! [- ]- X2 \% j1 Xclass CA
! r2 b" Z" v& ]5 l1 T$ @: r{7 X8 U, P3 w! m. B& ?( d
public:  D! D  V! P( j1 E
        CA();( q3 f: d& f8 {$ |
        CA(CA&);1 k3 C+ A8 _0 D( N, Z, {
        CA(int ,int );2 W' K3 H, U% `
        ~CA();) e* v" ?$ x, Z9 [3 }
        void print();. R2 \" B$ N  H2 @; h2 H) }( P

. k) |, w! [; q) `private:
( I/ |" a* f# i        int i;
0 ^" @( k3 i. x: e        int j;9 r  T3 h3 U/ a2 b4 `* J7 Y3 o
};8 b4 d) u7 X# s/ v5 ^5 c( z/ ?2 E, v
4 k, Q' [( u$ F
CA::CA()
7 N3 P: W. w$ ?+ Z% c{9 H. Q9 n! j( i+ ]8 u
}
( h% e; E; g* t) C, V9 n) V$ Y, D. L$ k! H
CA::CA(CA&one)
! l6 W7 \7 j2 x$ t5 Y; q{
* o. q5 |' Q' {8 n1 E+ e        cout<<"调用复制构造函数"<<endl;
1 c) c6 `, C0 Y$ z. r% L        this->i=one.i;
& L2 O, c# U& D' O        this->j=one.j;" I! `: }! x1 G6 p
}
+ F1 L( p# U& I3 J/ t8 q9 m" E4 j8 M9 l1 x
CA::CA(int m,int n)  K5 |( l/ v+ ]2 C  S
{
0 n2 G, y1 p3 P0 Z# D1 `  s        i=m;6 c9 j9 w/ b, r, v* u+ Q' N* M7 p
        j=n;
4 u1 C4 c9 n& k* Q2 q* i0 ~' X}
! m  |& t7 @; E: H: w, a) U0 D4 `$ g% }$ l. p# O
void CA::print()5 m  }, y6 Q/ ~9 H
{
& e/ M0 x  V8 O4 s: w        cout<<i<<endl<<j<<endl;
! P/ u. l, x% l" K; d, M}
3 N9 E8 ~5 O$ N) n5 X3 b6 W! X5 J  q. h! t' @4 T
CA::~CA()( n& w* x& _- n* f# B
{
$ J9 e7 h) k' B; s9 M$ D  `8 d0 v# H& Q}
: h- t$ E% ~, k  ^0 [, b; ]* m
2 z1 [+ K) P! Z3 }5 N. P2 G2 {#include <iostream>
, |: f9 }+ M' N% R1 fusing namespace std;( L4 A3 T* B! E/ ~% t
#include "复制构造函数工作原理.h". R; O6 q" O/ V! ]* M! X
int main(void){        : m/ ~$ Q7 {+ H
CA a(2,3);        
3 b* E/ m/ Q  C: ua.print();       - K7 B- ^; D, `. S7 g1 u1 e
CA b(a);        
$ l6 f/ h" v& h, t3 i. fb.print();
' l) [; D- X% G- t: Z      
2 V1 B; C; C' F' { return 0;
# ~0 ?' b% n0 @, y9 ^+ D, U}
% S, p- K& c% n) w& U$ H+ q
" G" V0 V. M; Y5 A# ]2 f9 a1 G$ `6 _& @: k2 i$ h

/ p6 y+ o9 P+ ^* d$ j  [6 Y2 v. Y7 n# `9 _, P. X
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:  c4 E9 c' L5 @
1> 初始赋值时:CA b = a;9 U: [' f( B/ w: a/ F% ]$ K6 O
2> 按值传参时:void myfun(CA ca);
& F/ \; Y  u, j3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ( Y6 y, X" E% U4 R3 k
复制构造函数在以下几种情况下调用:
; D; a$ f4 ?/ d0 I& c9 ~1> 初始赋值时:CA b = a;
( Q8 U6 V7 q( c3 x2 v# f2> 按值传参时:void myfun(CA ca);

2 e0 A' u/ H7 q% [: Q" H第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-12 17:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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