鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 : I) o- k9 d% h8 ~" f

# @- ~  s. v3 W; uclass CA
" u/ m  E( S$ E# ?{
9 K  [. k8 T% g; {public:
% W" ]0 A3 g, q. f        CA();
2 E& T1 \1 Z5 a: m2 I        CA(CA&);
- S7 v: @" B; O! k0 i, ]8 z        CA(int ,int );1 O1 z% E  e* c: P. D) B
        ~CA();
! P8 j6 j* y. O% f" h& `* f        void print();/ C2 {. V2 y: t
8 X+ G7 K% Q: C) j
private:
0 D6 {9 A: `/ [! Y1 d4 A+ m  ~        int i;
  w1 [0 j, |# B- j; z4 R, M        int j;
  d: U( ^; I5 U/ ~. Q0 f& B" u};
0 v/ I2 v8 I# ~  O) ]: h+ L% E. D/ T
CA::CA()
/ I' d) S& `  z. r{' M0 q7 Q$ I8 r1 F& c/ ]& }
}
. i5 I2 ~; B) P$ [$ N) G. q! j% }; s% D* E( X$ @* @
CA::CA(CA&one)
3 q9 f6 }! r( {0 f{$ J1 V2 }( x* w' T7 c
        cout<<"调用复制构造函数"<<endl;
" _! l% D( ~: x+ L# g/ {        this->i=one.i;
9 ]1 r- u; x2 U7 N9 m7 j        this->j=one.j;, ^. X( ?" X6 o4 A" r
}5 ?2 s' N! N) k8 }. W5 N

: ?) P" W) @3 C6 {, B& eCA::CA(int m,int n)# R/ f. v, A! u1 h
{
8 c! t0 M, S$ \) f        i=m;
2 A! H5 C8 q# r        j=n;
8 m- A2 s. _' E}
. n( K/ k7 g- L8 i; O6 l% f& T' e( W3 g: l
void CA::print()
* K: w* ^  b: o! `! a9 I! N{# b: k  b* _/ v5 n
        cout<<i<<endl<<j<<endl;
6 V, v/ D; v! P, _) k0 T. M}
- ~  h# w; k) u# p/ s
$ R2 f$ l) f+ E* {( tCA::~CA()9 w9 R9 `6 w( I
{
0 r9 ]; ~0 T3 N& u0 Q1 d1 {}
+ @* _- e$ c4 K7 L% q( Z% k, Z3 {! w6 n
#include <iostream>. h- k* ~' ~/ q3 |4 g. A# q, c
using namespace std;
# T: }* q; \" N; N3 }8 a#include "复制构造函数工作原理.h"* D; i* B0 l. M" z
int main(void){        ) n% U& Z- C! j6 p+ J
CA a(2,3);        
1 X. c0 M" k( L( F& aa.print();      
  k) d8 w3 C3 j9 l* O CA b(a);        
* g8 }# t8 _& B6 i# pb.print();+ q" N. z& l  q, p8 C& n& O
       ( H8 n/ ~! ^$ h  x8 Y7 s: z
return 0;( }5 O/ v3 X" f5 G3 V
}
- w* B/ h: _; {! a
: V6 e" `/ P# B7 F4 h. Z9 q% @# T/ v% R1 Z- g9 `, g. q

- p8 _/ c' l+ f& H9 x  `6 y3 Z7 V( o/ W2 n( U* f
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
8 F3 A# P9 T  J# Z6 Q6 a9 h# C1> 初始赋值时:CA b = a;
; Q. I  x3 M0 C6 A2> 按值传参时:void myfun(CA ca);
, M3 O8 L- M8 g; ?' C' K3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
* e- m+ K6 R; U4 }) H9 @- g复制构造函数在以下几种情况下调用:2 Q& X+ N0 x$ p4 b$ q' y
1> 初始赋值时:CA b = a;
4 y; u8 r: b" c" Y# R+ P2> 按值传参时:void myfun(CA ca);

$ O/ p# U! j9 l$ I  D. z% b; ^第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-12-17 17:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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