鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
- s3 C/ e6 T/ {3 \0 X; {" H, ]& g' U0 ~2 }0 T+ }1 }
class CA
; I9 b3 Z  ~( A! S5 E# f{1 P( D. _) G/ l' W, D- `2 r- V1 W
public:
  ^4 P, d' D% n; ]! O$ `        CA();3 t% J6 i3 N0 W7 \% Z3 J* z$ F
        CA(CA&);& j: @  y+ V+ R5 [
        CA(int ,int );2 M. w# y+ Y/ J! {' h) J9 w! f
        ~CA();1 c9 j# c  l, |1 k/ V4 r
        void print();
1 Z; X: u( w! U5 O
1 a( z/ c- a: @0 Z+ N  W8 G. O* hprivate:
: M. O0 y0 f; C) h9 p! |        int i;/ U5 y# T1 \5 k) }  S8 U* |  c
        int j;
3 i1 n% j5 S" y};# r: n% M% U% S2 C' ~: U: n
/ p6 ~: w# \/ F% Z: B, d
CA::CA()( H# [+ ]7 E5 ]) y6 M/ A4 y
{
% e3 z8 y, O3 Z8 d+ }2 b$ y}
& G: t, s" Y2 f0 ?4 h9 b* Y. `
% V/ F& Q2 f- h/ ^( d2 [9 Y5 ]CA::CA(CA&one)
  E- `  i2 s& j{) k* A2 B3 v5 }# B9 X
        cout<<"调用复制构造函数"<<endl;0 N5 Q0 j; S- I# @3 U
        this->i=one.i;" C) e  }# O, o) D( }. K3 I
        this->j=one.j;
, [, v# s6 g- c( y* C}/ h' S0 r. T+ T6 }$ m! c& O

7 d0 I( m4 D2 o! pCA::CA(int m,int n)* U* I& X' V1 C- e
{4 J$ M! s0 _4 Q% k& m! o
        i=m;
& t* c/ y7 I- x1 J& w8 W9 ~2 h4 H        j=n;- f( h6 P7 E$ R- Q0 y; h. `
}: ^: v/ C* a; h0 F
% A- X, q+ X& A
void CA::print()0 H" E! y2 B6 d
{
) i1 u& @  a( v6 S4 \3 U' G' E2 p        cout<<i<<endl<<j<<endl;
3 J2 R5 }  E. f1 K4 K+ |}
3 L6 Q7 _# F1 N9 i6 i/ w; N  I( O- D8 W% b" Q: B
CA::~CA()! k$ u; T2 N6 ^/ I8 S* C
{
9 v" Y4 Q0 ]: D4 h}$ j' {$ @2 q' E# c( [$ Y

8 P' `  ]4 h: x4 Q4 ^) T9 X  [#include <iostream>
  V# M7 s# G: C! V1 _. Nusing namespace std;+ z/ N3 N$ Q! O% Y
#include "复制构造函数工作原理.h"
3 R, ?' C. q( \" R/ P1 w* P6 e% Uint main(void){        
5 k: N, h4 t6 F/ S7 iCA a(2,3);        / Z4 {8 ]7 _# ?& m9 l
a.print();       8 j4 C, v% L: F1 s- N& S
CA b(a);        8 _' P. Z0 f# r) H, b3 T4 r4 f
b.print();
, ^9 v  Q3 j$ {; l4 _9 t% X# j      
' ?2 z$ g& J) K( { return 0;
+ f. J* F7 q6 \( c) D) O: W}+ _) h! o  B2 l( p5 @+ X, Z! ?2 W/ e

+ g4 ]% ^% e$ m! T. }
6 [% n6 i/ t0 K5 H( Q$ l5 n9 B! G* R. s$ y$ {) p

0 |& |  h7 i6 e0 V: M
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:( s' u" f4 j; w2 x2 P! h
1> 初始赋值时:CA b = a;% ~5 `$ k7 v, _% a
2> 按值传参时:void myfun(CA ca);  \/ J' Q$ X! ?. h! ~
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 4 V3 C0 W5 a- K: G% I. c/ G
复制构造函数在以下几种情况下调用:
& D, J+ C( y) Z% r! z1> 初始赋值时:CA b = a;
) a6 |' R* X4 x- z2> 按值传参时:void myfun(CA ca);
% w2 v& Y, h. c2 l- }: j, U1 L  D
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-9 12:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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