鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ) E& p% k, P% q* f" A
3 \8 m3 L% g) k5 B# T" Q
class CA
; a) O7 I! w0 M/ V  R3 S" R{
( ~: @3 }/ I$ V: vpublic:
2 ~. c) n* b9 z7 q% I' b9 J9 j, G5 |        CA();4 X/ j" Y" V5 a
        CA(CA&);
7 T, B7 y7 b0 `1 V. K/ j6 c        CA(int ,int );3 c5 V( v& V! M- {' @' M
        ~CA();5 e' i3 b( P. R
        void print();5 N0 K& J. }# }  M1 ?

, P  a0 I% ~' A6 Aprivate:# i  _' e3 {9 t& S- ?- ~: |  A% c7 c
        int i;
5 i, ?: x; t& {6 p6 f2 h        int j;
% |0 o/ R1 p" F/ t6 C: |8 N3 J};
3 y3 |7 T; T% J- d6 _
7 ~/ K( w0 P* G7 G& }2 T( p+ h% UCA::CA()
) Z) N  t4 N& X) I* Y8 ^{: w/ e  X( s* Q5 q) `2 ~5 b  }9 n
}
+ _& b7 q) K+ @% h- @
9 W- C' n2 G( q. l6 sCA::CA(CA&one)1 R7 Z4 ^, H* E$ H
{& \. P5 S( v3 q* b: \% Z- C
        cout<<"调用复制构造函数"<<endl;1 c. d% y9 V* u
        this->i=one.i;
5 O0 t6 x* a0 L- }, ]# m        this->j=one.j;
/ q- m" q: O9 K$ P: w" W}% a& K) g* R: h7 ^5 B; f
, @+ P3 E9 Z( F3 I) c1 H6 z4 k; {
CA::CA(int m,int n)( Z8 I- Q; \( ~
{
3 }' w& S4 P  x- k/ ?% \! _        i=m;
3 M+ D# e8 c& G# i6 A* {        j=n;7 |. q" f) v9 Z# \" U
}
$ ?7 ?5 ?) O- y8 p: ?8 T- ?  [" E7 n4 ]6 N) q
void CA::print()
+ ?+ `# T( a; A, j+ w$ B{
5 i+ _6 T/ s/ {' K; M        cout<<i<<endl<<j<<endl;" z2 Z6 t5 G# d6 B  V5 [$ y
}! ^; s& U4 Y- Q5 Q- l. S. c
4 b" M; {( P. H, i# k
CA::~CA()
: E; Q9 e* \* n" i{2 |, Q: l: y) O: h  u
}
8 g: ]3 H( `0 G) @
! p  B1 _% v2 U( n#include <iostream>
/ G% i" @9 f3 ^% i* p3 {' t$ Iusing namespace std;
) u. `& K. K. M  i, r. k. M#include "复制构造函数工作原理.h"
( ~0 g. Q! C. P% r/ F  d8 ]+ `int main(void){        9 H4 R& f! M. @1 R
CA a(2,3);        ! h; q* r0 @' g  a, m
a.print();       " c9 X* t: g5 |  w! e% `7 g
CA b(a);        
; M1 }1 l+ J& T' i% Tb.print();3 j% p. t0 N0 I5 x, G
      
. }# K4 j/ H+ j& _ return 0;
' B9 G2 B. x7 {  y}
9 J- ?' W& y7 B# Z. P$ y+ W0 `; c5 u; _$ ?0 x5 _
1 ?  A( m; J* r4 R/ m) [( {/ q2 ]

. ?6 T% V# F* b. n# D: P# J1 |7 \6 c* M. Q
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:4 ~1 a/ q/ C. ^5 b. \
1> 初始赋值时:CA b = a;
/ {* T& m2 P7 w" n5 {% s' e* d2> 按值传参时:void myfun(CA ca);  K+ a7 W0 D, E7 A8 Q
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
; c. s) A$ L( w  B5 x. D- V复制构造函数在以下几种情况下调用:0 d7 i- F2 F: m) D' k8 x
1> 初始赋值时:CA b = a;7 Y* ]/ |7 k1 U$ |
2> 按值传参时:void myfun(CA ca);
; j% [$ }9 e; C0 N, u) H
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-24 12:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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