鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 # r% m* M3 O- h: ]

' }  U' a6 x- n: Hclass CA
9 K( p4 R) h! l; I0 T{
0 i  s" \2 F, A5 X2 N1 x0 j0 Wpublic:
- u, j, ], _% d        CA();
* s  N0 v+ h: b4 N7 l        CA(CA&);
' T+ r) v* F. n2 v" V- P        CA(int ,int );
9 Q' e) h- M" E/ b4 R" s        ~CA();
# g' j  e" l. |( u2 U7 {- |' _        void print();
1 U& r  p4 F, W3 M6 A$ S. ~- A" g6 `$ O$ K9 i
private:# |5 X; K! V6 n; o, I/ W
        int i;% e. K  j! B7 D/ n7 U1 f) J
        int j;9 \5 z: v9 i, B
};
4 t$ v$ C) U. u4 t! Y% Z5 U* n; x7 ~# x0 g9 A9 {* l: U
CA::CA()
1 W  b! \3 Y9 n, a. h4 _1 k{# X0 n3 V* G0 \: t$ u
}
: W/ i. u  ?& k. o3 u) P! u8 Z, G% M1 M! y! R6 p
CA::CA(CA&one)
( X+ M  f: A9 R; ~- `{3 g% _, k' g, Z2 O" t! u+ P5 c' x
        cout<<"调用复制构造函数"<<endl;9 d3 o9 h. F8 K+ n' `
        this->i=one.i;
0 [/ ?5 \9 j$ R8 S        this->j=one.j;& @# K4 p# ~( Z
}. |9 f) _' a6 m4 \3 a
: K- Z. @8 P2 ?5 u9 o& m
CA::CA(int m,int n)
+ p, K/ @; |2 }7 h{  |' ]' C4 ?$ O) v" ~
        i=m;6 H& ~5 s( g4 T4 l5 r. W( |7 Z: p
        j=n;
% h! I; G; ]/ {' a1 g1 @9 X}
  Q: |8 _  S# X) n' @$ C. O8 n$ o) W* R( K4 U
void CA::print()7 W( l1 p9 ?: L4 h! [0 e( ~% H
{6 T% U: Y* B% d- @- L
        cout<<i<<endl<<j<<endl;
  K' R  O! r1 x9 l, [/ h* `}
6 I3 Y. }, d0 C0 M6 z/ R- V* r
; V) ~% K/ Z; ?& l4 bCA::~CA()3 R4 M" ^4 v5 X( F6 b. p5 n8 m2 B
{: X3 i; S+ F9 v% Q2 `
}/ j; j* Y* s) H( w; |# t* V
  `/ s0 {* Y& a* d
#include <iostream>
7 X* ~5 p% P" L' z; c* @) I, Ousing namespace std;  k: T# O, ?4 ?/ g
#include "复制构造函数工作原理.h") L9 r; `7 v6 U% ~$ `' T% X
int main(void){        
! S- V1 m/ g/ L% {CA a(2,3);        
6 H6 G' X7 X! o! [$ R( za.print();      
; W7 ?9 V3 L( r* `3 n. b9 t CA b(a);        
/ W. c% C: M+ S* Q0 r: O6 p! p+ jb.print();# Z9 L9 V5 y2 z; Z
      
/ t# T% T4 w+ x. X) q return 0;( X) P; X6 ~+ V8 F" H
}
" c' x( A4 o( Z1 v, |2 F+ Q4 V  {( B; c

5 P* l' `5 G( h1 c) T# U4 A& v3 q% Y$ K6 S

  I; w& x% f2 B- f
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:4 K8 H& f/ i, Z' `) ~3 Y
1> 初始赋值时:CA b = a;( P/ J9 m/ T" i( q" ]$ d
2> 按值传参时:void myfun(CA ca);
, W% @: C* A: j' S' Q  i  Z3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
* J3 S* C: K4 d: g. ?/ g复制构造函数在以下几种情况下调用:
' ^  b  R% t  n6 I2 a5 b9 Z5 Y1> 初始赋值时:CA b = a;( g. b0 K' C. E7 o9 \2 F
2> 按值传参时:void myfun(CA ca);
/ ^! D! P- _% _9 E+ M
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-28 08:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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