鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
. e/ }: u% U5 p  ]
! ^) |. N- A& `+ `  ~  iclass CA
$ [& N3 @% e; B, k{
6 j; |, W3 b9 e* Y- tpublic:
% j' c# r/ J0 a9 R        CA();
/ B7 O8 w7 ]- O' m( }        CA(CA&);4 {6 P; T9 _* P: p! S) t
        CA(int ,int );! t4 `' c$ Q( q" K/ y
        ~CA();
4 t+ z1 B" b  P2 G- \        void print();  \% R  @$ D7 c- e3 D- E
: ?+ R3 l6 f+ j9 `0 h( N  F) c
private:- e0 y9 b: S) p9 D8 ~/ o
        int i;
6 y# i* ?- i7 s* ^% K: h$ u        int j;
" m, M4 s) Y, P6 {};/ H# q( J* d9 V" E, s& S/ B
4 Y! d; h# l: k1 g$ R0 O+ K' B
CA::CA()  }$ X2 |' B, |& a) Q' e
{. u- H8 v/ ]8 A$ @. s: `
}
4 S5 [7 k) S: L2 m  \, G8 P1 h. R: o( X/ k2 @3 p+ j& r7 K
CA::CA(CA&one)
; X# e0 p$ F, S9 \8 c3 ]' Q{3 k2 D. V+ \4 ^& |( K) F
        cout<<"调用复制构造函数"<<endl;
* b8 v# H' Q+ J9 Z& d8 B        this->i=one.i;
) g4 z! s, o8 j8 j# P+ L7 m6 \4 C        this->j=one.j;
; s! P. P" R" T0 p# V& ^7 y}
9 a' u- {. o. a
( B0 B2 \( r! n) L8 OCA::CA(int m,int n)6 G3 v6 ?* g/ i7 X/ f* Q( A
{0 d2 ?; Y* S) v
        i=m;$ ~% L5 @4 M- y% t
        j=n;
3 j1 Y2 J* H" V" F, |* P}- c# K# a* ^+ N

0 w$ k0 [) a$ m! B3 t5 e: p, Q& ivoid CA::print()
1 _% h- k1 O. W: x" q{
& [- h4 ]3 j; ~4 o0 z! t        cout<<i<<endl<<j<<endl;
% ]/ Q" ]- t1 S1 f5 d}
% J3 m7 L" s! J/ s
; ~+ H; w/ H- g) ^! S2 BCA::~CA()+ x& m7 t  a6 z- N
{8 M, o# _% B# t0 Z( h, L
}7 h, `3 z2 f; ?' @( g
. c  C7 }  H! G, s' ^9 u
#include <iostream>6 C3 Q5 f6 S" i* @$ e
using namespace std;; E$ y! ]2 F4 ]% n! c( h, K
#include "复制构造函数工作原理.h"
& b8 i% L7 @5 V9 Z7 n, _int main(void){        
4 {  T$ N5 k8 B/ |2 o- oCA a(2,3);        9 z! e; k" f, D* @1 E! U, Z0 e
a.print();       7 X5 J4 v1 y$ F( ]8 i/ I
CA b(a);        
0 X$ k  c3 E9 O! l; Yb.print();. p' A* r7 ^7 A& D
       / j# H$ ]9 z6 `/ Q4 I
return 0;3 d) t+ {. f, B( U! K8 ^1 k% O
}+ p$ G3 k, o; E% h, w
# \/ o/ Z# @; S, t* _5 G; w

. l- w5 S& j/ M7 Z6 t+ \+ l; i6 f  n6 s; A4 G5 K
' G- p  G* A  |
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
) X  X) L, n) C0 ~  E8 z1> 初始赋值时:CA b = a;
3 Z) m6 [( d/ e3 K2> 按值传参时:void myfun(CA ca);" D0 e# u# j' N$ M
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
' ~) `. U' c9 i+ t复制构造函数在以下几种情况下调用:
- D0 t0 l) l4 A7 {( E1> 初始赋值时:CA b = a;( P( ^1 r$ J) a: ?2 h) |
2> 按值传参时:void myfun(CA ca);
; u" ^' |$ ~! B6 u' q9 r4 [- l
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-19 18:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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