鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
6 i6 q( K2 e4 [, P6 m7 {9 \" |& b# q7 t) J
class CA
. z+ M0 P/ g. q0 L* r0 Q{! y& W$ E$ S5 \& {2 m
public:
  |7 q/ a9 k/ ]- k$ R        CA();# c# t3 t" {& x9 a7 v* t
        CA(CA&);# `% W) y9 ]7 G/ J
        CA(int ,int );
. t5 W3 j" C9 D: ^3 C6 f        ~CA();
. a, l+ q  O* }" W        void print();. O' k3 j. v5 v
( S' C8 l8 v5 v& f& X+ r0 T! H
private:
2 m8 b, |; ^. I        int i;# W. X1 U4 X+ j# K" a2 I
        int j;) X) d  p6 ^7 a* z( r0 p
};
& i* w- F3 c) `) `) ]4 `
6 n' K9 c  A% p) `% @/ ~& D/ XCA::CA()
) c- W& R6 |3 C6 j' x  _& j{# A$ f4 g6 m& Y$ W) C
}- k( \0 h& c. n+ y
! P3 ^1 ^' C8 Z: m
CA::CA(CA&one)$ i: ?- D8 l  {( L! K
{
9 n( p! ?+ C7 s  [9 m        cout<<"调用复制构造函数"<<endl;
" p- ~9 @/ Q* A+ C5 s9 w        this->i=one.i;
( W9 i' W% B2 G        this->j=one.j;
" ?. R- a3 H$ Z- O; {}
6 h* u2 ?0 y- m- O) c7 x  Z- Y1 [6 B2 Y% X
CA::CA(int m,int n)
& I7 M' D, a, H/ w{1 G+ o$ b4 W9 i% q
        i=m;5 d8 x& {" }0 v* t0 @4 {% b
        j=n;
! d$ j' _' w! i% @}( u1 ], N" `/ C/ ~# Q
" T7 b; D( g+ p; y/ _2 \
void CA::print()
' x: \9 ^9 V! ^, x; N+ G+ t{
1 D+ N" x; r( L$ u0 G2 N        cout<<i<<endl<<j<<endl;
& Y( [& b) |8 K/ M2 @: b}
9 J/ d1 l* \! P! O) ^+ F' m
, V( ~8 R- N) ^+ f6 t& F5 jCA::~CA(), A" l1 m8 H9 f. n! s
{  p( @9 o1 ]# E: v4 T
}9 q. H" U0 O% u- ?2 S6 i

( e1 H% e) D6 C0 M+ A9 I# V#include <iostream>
" \: ~" f) M" y7 |using namespace std;; V7 \5 i" ]* e; S
#include "复制构造函数工作原理.h"
, O* L, Q9 U7 {int main(void){        
' c5 c5 v9 Z9 n4 iCA a(2,3);        
  c5 W* S3 X( N5 I+ k0 S8 o$ I- ~a.print();       / @7 t; e; U7 U( r2 G2 p: q
CA b(a);        3 ?' b# i- ^' @( r; ]+ }
b.print();+ l* @/ \8 {. [* n( E
      
- a( u) F2 h) s, r0 V. D return 0;
2 V9 v9 [( X9 S2 q  \* [5 w9 Z}" H  ^- k' u3 u* J0 n- N

  O" S- s' o3 E8 x
, O8 L; l: Q  U% W; k2 J+ a- O! u/ F( w! `

8 @% s$ }/ ?7 F/ D8 b" p% t- p' v
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:  ?% w7 s& T" T1 e/ U: b
1> 初始赋值时:CA b = a;8 h) x* K6 G+ V6 p6 W
2> 按值传参时:void myfun(CA ca);/ l. |. C7 X" n0 k
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 1 W8 S4 ]: E  m3 [
复制构造函数在以下几种情况下调用:- [( s! K3 D$ H4 N$ N6 ^
1> 初始赋值时:CA b = a;2 i8 u7 j% c- S8 ^/ Z! L1 [
2> 按值传参时:void myfun(CA ca);
# h( x0 u( h* N' Y" r3 F
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-16 10:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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