鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 " z( }; A% E$ n  @. k

" T5 C; y; F4 y1 ~  p  G) ?class CA, `5 f9 T% _7 H" S
{0 d) c' `" B& w& e# E" O: w
public:/ d( ^+ X; @; k* Y- I( @# U9 u
        CA();4 ]% f0 T, E: T6 R. Z. k
        CA(CA&);
0 J" w# A+ U9 ]8 Q5 n9 ]8 |. k3 Q        CA(int ,int );3 o) t7 h2 b( G+ u
        ~CA();5 K( w: _- N/ L. \: j
        void print();
/ v5 K1 m+ o3 ?- W4 c0 P  j) |) [% C( L6 `+ }! F( s( I0 z9 U
private:
) `$ O- T% B0 n, r8 j        int i;4 u. U5 q0 k  E+ l2 A1 o2 _' H
        int j;
; I$ |, T% o: T) q( G};# ^9 Z7 B5 }: D2 j3 Z

6 \. z6 Z$ ~2 l* s$ x6 i1 MCA::CA()
5 J% v5 B7 f! x8 e  I1 s; q- a- t{
( y4 ?5 ~% q3 R1 x}
& X& X  H" F! e2 I* M: R/ B! ]: v: K9 K  S& _9 o
CA::CA(CA&one)
7 g- @" P/ C- v{
! v/ ?" B5 {% u! i        cout<<"调用复制构造函数"<<endl;
" [- J$ A1 I6 |3 u! ~$ U        this->i=one.i;
" z0 S  p4 J$ Y  J3 l        this->j=one.j;
6 H2 t$ h! N$ ^7 S9 e! E% p}, L  f1 k4 g$ u9 B2 g# W

( P8 a- \# n2 G7 }% KCA::CA(int m,int n)  K6 x$ w5 I: }
{4 }- u6 s/ }, a. W' @; Z7 \. ~
        i=m;
; B$ F6 Q! [# u! M        j=n;
4 b  M8 L8 P0 ]5 a2 g# f; f2 z}
3 W% o; v8 H, ?
' p. D; I; t2 e" [( x# Rvoid CA::print()
* m4 m. K( n; G5 D" \' a4 r" H4 }{$ O" B4 k4 A. j6 e9 ?0 C/ |
        cout<<i<<endl<<j<<endl;
- E( `6 N% w6 E1 _" {}3 ^+ H* f+ o% L5 c: y# T1 ~* S
9 |/ b6 l) P( s' Q3 }4 }9 i* ~% R
CA::~CA()
  ^5 `& z9 N* X6 l" d3 }( A1 |5 K{
2 s" G$ r2 e% u( W- N: x}( h3 D1 I# t' L  R
6 P3 y# Z9 {. ^+ ]
#include <iostream>
2 ^1 r+ O) }: {0 tusing namespace std;# J3 D, q7 j3 r1 d# @# z
#include "复制构造函数工作原理.h"; K2 Z( v$ b* F4 |* h. k6 M
int main(void){        
- H- |2 H$ j8 KCA a(2,3);        ! u# }) z# ]4 j, e5 q
a.print();      
* k! ?! Z& Q* H$ K5 S CA b(a);        : W2 [7 \3 c3 ~, P* l$ A! y( F
b.print();4 U9 F- F1 X% b. k
       : c! r7 G" A: G" ^
return 0;* q) d" c1 H( |. i1 w+ q$ M8 H9 A
}
$ X2 Z  J, B/ w$ I2 P+ C4 [8 F$ S; B4 {+ w

% Q5 C: R! v; {& x
0 @$ P2 x8 Y* p) ]. F2 y& U& ^* F0 Q* X5 e% q: t/ L
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:* N# l1 o8 w. V" U
1> 初始赋值时:CA b = a;
) z! j. }, ?! X. G) K2> 按值传参时:void myfun(CA ca);
* f% j8 }: Z2 V! w3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 , l! w+ a4 }) X  c0 |) s" d! \
复制构造函数在以下几种情况下调用:3 c" q, w3 C- K6 W3 Z0 C5 k
1> 初始赋值时:CA b = a;. _! ]0 p8 S3 }8 n
2> 按值传参时:void myfun(CA ca);
6 m- y( v; _2 c- z5 n
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-13 21:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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