鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
, U3 d; A0 F9 L0 ~/ ~7 Q1 g) o2 T. q5 w, q0 y8 t) G
class CA
) u$ G9 n$ P* j' Y{
% [1 ^+ k, n  l+ L6 V* F; ^* X7 m; tpublic:( B; l. S& j0 g# {
        CA();* `9 w$ i" Z0 u# x6 w; M
        CA(CA&);
8 Z8 r* H' f. I: w, H7 e        CA(int ,int );2 x$ e) C3 y+ }3 s/ g
        ~CA();3 Q' c) i* e8 Q* @
        void print();
8 [% }! p3 ~& k+ V. w6 t3 s) S9 X# {$ i% w
private:6 r) O" E/ F; P) W% X+ d
        int i;8 T+ I, x6 T) F3 e" J3 A& ]
        int j;* q! X! l4 B& z; T" j6 ?
};6 h3 n- [/ [6 A- J: x" Y

) u( N: j* U8 b) @! a: s: UCA::CA()5 J% X0 [0 D2 K( J
{5 V7 C6 ~/ m$ x: f0 t9 x* x, K
}/ V3 P" L4 r$ r2 w  m

- ]3 L( G& x% k6 x4 bCA::CA(CA&one)& p: a  h! }# A, `
{
, l4 c3 G, h2 B3 {5 W        cout<<"调用复制构造函数"<<endl;
% `2 k  M! N+ o        this->i=one.i;. o* q" @7 l- ]- u. [' L
        this->j=one.j;3 k( N6 x( @9 R0 c8 g& Z
}
- z4 R8 q0 y: l+ D7 ^
+ \* H% G+ k2 h5 Q0 ~) d: H0 ]6 mCA::CA(int m,int n)
( w( X* U1 B; {{' a" x0 h6 b! I
        i=m;
' P& G+ w- Q" Z7 h        j=n;
( N) J1 q1 A( f+ g}7 {1 r: P, x7 d, h7 z& S
. q4 O* r- |1 @( J  w
void CA::print()3 C" S% k2 s2 b" P8 e
{
5 ?% n+ q8 P' I/ h5 H        cout<<i<<endl<<j<<endl;
/ y) v5 ?- Z7 f8 F% K% b+ i& ^}
  d( ~1 o6 A4 w. M1 ?9 K. ]# F* U  d# g' l$ d
CA::~CA()( D0 _  {$ T% k+ Y5 S/ V
{
/ ~! y/ K" `/ U/ Y" v: m4 T8 B}
) ^. s1 a% I; M  H
/ G  L2 l! |# k% l- R' N#include <iostream>
0 \* m; ?7 c1 e# I' \- x' \using namespace std;
5 h7 m6 w: n1 e2 l9 N$ p#include "复制构造函数工作原理.h"
* R" v: t8 ]7 F5 G3 o$ Z1 Tint main(void){        
) D1 h* N) ?9 @3 [CA a(2,3);        " j  @# h  `8 u6 E
a.print();       , r3 r0 Z/ \0 D; ~5 ^" d. U! e
CA b(a);        + W' g# K. k8 f5 K
b.print();$ y) L- M- ?6 |
      
8 u  I) \- ~& q return 0;9 e7 Q6 @) @# @" u* O$ D
}
- Y3 {: t' ]  d0 }4 u5 Z' C, o8 }, ?$ [& b4 R% p& ]: N: ~
4 W, D' A( W" m$ n  `2 b1 s# |0 Y

3 A2 n* j1 O  m0 }( J
4 p7 V* T* K3 C  k
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:0 U0 c* t' W3 o' o# U/ o5 h
1> 初始赋值时:CA b = a;
. [$ T3 G8 b+ z* P) b5 I$ |2> 按值传参时:void myfun(CA ca);
- W; M) O# u% V( h/ U3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
2 i) o6 C; m9 z& G% D# h: ?复制构造函数在以下几种情况下调用:
- j* Y, ?; z% s+ `) \6 o  B3 f1> 初始赋值时:CA b = a;4 ?! |+ K* F" X
2> 按值传参时:void myfun(CA ca);
! a: I4 a' I. ~' \
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-3 17:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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