鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 5 _6 U* W; E6 H! }" ~" |+ u
* X& m" t8 X0 V+ ?0 f1 a4 s  E, I2 z- O0 e
class CA
( U& }! q. @2 Z4 Y{' ~/ A% ~7 ^' |$ Y
public:
5 {$ L5 l8 y5 ?9 p8 p, x        CA();
* Z' V; z- m  Z( O+ ]) C) k0 u        CA(CA&);
; `% I* o! E0 G/ ], w5 d0 v8 \- Y        CA(int ,int );
; L3 \; ?% i: s9 U3 f7 {        ~CA();
2 K" a4 F& W5 d6 r: s# L5 ~9 G7 v        void print();+ F+ B% M2 J9 i, i0 B

# Q& D3 V* r: M: x4 K( m2 v  d& V# ~private:# ?/ r+ [$ @. I2 l* T1 w# v( c7 O
        int i;  j: [" @# R' u  g1 l
        int j;
- L# G: k) J; E$ C. }! o};
2 `; x% U3 z0 w- m( }' j% n4 f  r: @2 e" e+ Z1 C# b
CA::CA()
( Y. K  k7 {9 t& y7 T{
) |% `$ p% v5 k) K}
1 j; p: ?2 N6 J4 A% y. u; C8 P6 r2 m: A7 Y* S) m
CA::CA(CA&one)
, W& W. H9 R& V. q4 U! Q% y0 n{9 Q, E  X  c5 t- I, r3 C
        cout<<"调用复制构造函数"<<endl;
2 {5 |1 ~9 S3 `        this->i=one.i;
: Q- u" C: G9 Q        this->j=one.j;. N6 a7 h) ~8 @* L$ @9 `0 M' F
}, r3 d( {, b  i  `0 _; t  U6 ~8 a& }4 s
$ Q1 e3 B& q  b" N, O
CA::CA(int m,int n)0 N3 q  @0 u7 u# F3 ]3 H
{- T' d  I2 a2 N3 S. C3 {
        i=m;
; n5 @9 `8 ~+ l9 c, j& ^        j=n;, L3 X; I9 U( ?' q/ ?
}- c. d+ A; N& ~* Y/ F

  k+ [1 @2 j- X! Wvoid CA::print()5 D  f. T- K" Y& \% ~
{- R* d; \) b1 l1 b9 o
        cout<<i<<endl<<j<<endl;
& v7 M" ^) ]1 R) e1 W! L+ O* W0 p}2 h3 \) ?3 e" D' D

5 v, G# u7 `; V) Q; e" I$ R( s, yCA::~CA()
  P& W7 a% t- B' y& u' l{
( d3 V- s' i: O1 u8 J}* I0 x1 O& a9 y6 V5 h6 P' {

3 P4 p) r6 s1 S/ @# {$ V#include <iostream>
& j& v, m3 `8 \: G6 {- Ousing namespace std;& G. w# B, L8 R# v3 _( [0 E
#include "复制构造函数工作原理.h"2 b1 v: q1 ?. }" z% c9 X/ v
int main(void){        
) K9 m8 v( F; ~/ ]7 a8 nCA a(2,3);        
- X' |+ \, n( q( n$ _! za.print();      
+ V! J. `; D& a- [- A7 ~ CA b(a);        : \; w, Z9 g2 ?8 g3 @/ N
b.print();+ v' k: t* P! i# D( M0 ?. ?1 U6 V
       + r" L. t/ R+ S( t
return 0;+ C, W6 Y' z3 R- a' L2 [
}
" E. n4 Y, U0 p6 C0 R
  B4 U6 a4 y- B: {/ _8 k5 w8 c6 h  x  S; H1 i/ d
4 |$ }  Z$ j6 u8 F/ j( \

4 k  m* U' i" d6 r% }
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:' \* c6 m  T1 v8 L+ C5 o
1> 初始赋值时:CA b = a;
$ W+ i8 b, C; D& \  k; f. d% P2> 按值传参时:void myfun(CA ca);" m- X% i% q" x6 v( {- ~( o
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 . E( k$ L" W1 a; ?' A6 u
复制构造函数在以下几种情况下调用:
& g- M4 w# Z/ O# c5 }1> 初始赋值时:CA b = a;# J# Z% q  J0 z% T* {
2> 按值传参时:void myfun(CA ca);
" _% d( }/ r/ X0 G, \4 Y: O6 m* U. k
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-20 15:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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