鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 4 _0 X) U4 Y" L' b1 _

+ [6 h0 N6 Y% `5 mclass CA
' M7 T. R: z4 S( P( l# K+ V2 l6 n{
9 x! t+ T6 @. r! i; o, F2 ^6 Ypublic:, P6 T5 M( {7 ^4 g% s
        CA();% N1 @# g: c( e& E4 ?
        CA(CA&);* S) v7 U- X& F" Q4 N* z5 y
        CA(int ,int );
1 A8 ?6 U: I' J' c, t        ~CA();
7 \  l/ l2 e3 E5 T% l' D& \        void print();2 C- ~6 }6 v) s( a
9 U8 Q+ j* u9 C1 p! L  a$ [3 N
private:
( M& H. n# H- i/ a9 ~* d# S        int i;: C  R$ V" {, \% x, x4 E! x# N
        int j;8 o& ?% C9 t- S
};0 u+ _! n9 D+ `: B" _  V
3 ?& q6 U$ k/ L% L+ K
CA::CA()4 ~0 y' z( e8 H5 d+ y" ~
{
! `+ h1 P' t$ f; H9 q}$ J- G6 Z9 N& K9 P! W- ~

) q' Y5 b  O3 n( Z& UCA::CA(CA&one): O0 c3 R: x5 [3 n# F* V0 F" L) B
{* r1 J1 `; e  ^. n0 f- v
        cout<<"调用复制构造函数"<<endl;& E/ x8 Z( S$ _6 c7 A
        this->i=one.i;
2 [; A( a9 x7 r3 u8 y" [. \5 d        this->j=one.j;
# ~- `1 c8 H, H}5 P! f) z8 p' O: p& j# _

; E4 N& ~4 o4 W6 j% sCA::CA(int m,int n)
  K5 b; n3 P! l- S. n( ], y{! m6 D0 _9 y. q+ y! @* @
        i=m;; f8 w2 d) g* G, g5 b0 w$ Y( ^
        j=n;* A. T# @* z6 `
}
% |* m) t1 Q  C" n
9 r  E. T" M$ N$ K' R4 \' hvoid CA::print(): I" k; Q2 y7 B- J
{
0 \: u6 k$ H4 M; f        cout<<i<<endl<<j<<endl;
6 e; }/ k( a* p}1 W: {2 w; C  N  s* W: R& [# F/ ~
' s3 E2 w+ F/ x! w1 e5 x% l) R" U
CA::~CA()
, J4 ^- a" `! l+ w; O: u{
1 R4 i" X/ W8 Y5 p; A9 T  c}( L! F, ]+ H$ V9 w* j  V% ?

0 p: h+ B9 u+ |' p. V- r#include <iostream>4 r, v, Y' \' \5 X. X
using namespace std;6 r; A) k0 q- I7 Q5 E' M
#include "复制构造函数工作原理.h"
: Z5 g) ]7 Y/ R; s8 [2 y+ I0 Wint main(void){        
' H( C; n, z( d: K" nCA a(2,3);        , O( u/ h2 N* K) y; k  [' a; Y( N
a.print();      
, I2 i- f. g1 N2 ]$ v8 _/ |8 F CA b(a);        8 g+ H* K$ Q. k" r' M, {* J
b.print();$ m* `7 O; z+ ~! h8 x
      
9 M, D$ ^& ]' @ return 0;
1 L' w, H1 z% ^7 S* x}
% i: G( r# S) h* B( _1 A
" ?( _) o9 }/ v, U7 C
, S$ Y5 Q& l; F6 i) C" y
4 U) N; A8 H0 V' f8 h! E9 a
# o. G  @8 g6 n7 p5 Z6 h
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
6 i! K0 M: A( E9 `( c) l1> 初始赋值时:CA b = a;
4 Y0 q) G* @0 I7 b# j. H2> 按值传参时:void myfun(CA ca);7 I( _8 u# p7 O8 i( b
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
% H# f8 h6 V& w5 L% a
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-17 07:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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