鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 5 P# J) q1 p6 t% [9 o6 h7 _

7 O) c% G& R2 Wclass CA7 S# C5 j1 V/ A; C& t8 R! P
{2 m/ a& Z, ]& @3 m2 x
public:$ M  M# x& |6 S5 b
        CA();
& K2 |( q: d5 ~  V1 Y, Q- [        CA(CA&);% o' z3 ~! c- B% ?: S
        CA(int ,int );% N! [  z2 J8 n9 s1 h0 s- m$ A
        ~CA();# z7 r: {8 v; H
        void print();
; q- R& g2 ^4 U% X* y: \  ~$ P8 j# h1 P! l4 \9 t' \& f: l
private:, m9 r4 o. d* ^7 l3 W7 h8 n+ [
        int i;  o5 H" {" G/ y* a( X
        int j;
" f. L) W# F8 w* W};9 L& k/ F/ v; |  n5 w+ b7 n& [
6 }! d- @! ^% x; i8 T6 q+ C% \/ [6 j
CA::CA(); H" o( y& L* d, r+ p
{
, g9 \3 e' f% h$ I% D}
+ l9 \" N+ {1 i/ x1 r
& Q5 K# |# o& R$ ~# M, qCA::CA(CA&one)9 k, U/ }0 r: s1 n3 W& L
{5 X! R" {4 G: J1 d% u
        cout<<"调用复制构造函数"<<endl;$ x  Z/ ^9 v3 \& a  `
        this->i=one.i;
: B5 x3 ~5 N6 a' D0 e0 L        this->j=one.j;
2 E: i3 k9 Y  e# U; ^- ?; R* O}
4 C, s5 K! M% k) t# [- c; L: a# [8 |: {' H; p( e
CA::CA(int m,int n)
! @3 Z# {3 h3 U( [{
( x9 K1 _0 K( A1 v8 T        i=m;$ j6 O6 ^2 F) ?9 g# u8 s5 M$ Q
        j=n;% I4 C; A6 I7 n/ u" ~" Z4 a1 [, v" h
}
& i& F" g* m, \: B9 c5 E2 t9 _" @7 O/ @( Y2 C4 B
void CA::print()
3 j! r) J7 t2 L: S( f. T8 u{
7 M2 ~+ N9 M& ?' l        cout<<i<<endl<<j<<endl;- E) A) I! O( B9 p4 e9 W. [
}
( V8 s7 A( S( o# G' O' Z) S- o: V3 P3 A- m" ]: e- g& X
CA::~CA()
7 p( c+ ^# i$ e, |* Y1 U5 F{
. [, N& _2 p' ^5 A. z& h" z! H}
# l0 j4 j' y! h( a; I' C$ r3 K) D: ~# |7 D$ I5 `
#include <iostream>4 t0 ~6 f' S2 a5 a4 A
using namespace std;; `6 {5 E( J8 m5 T
#include "复制构造函数工作原理.h"
3 m5 m/ D: Q% m3 K3 n; i7 O0 |* ~0 }int main(void){        $ B( u+ n% I' W- e
CA a(2,3);        * \6 X* P) t  W/ r& M
a.print();       9 d7 y7 O5 ^/ Z2 G) a& p
CA b(a);        
2 d8 D! r5 h  k3 a' x- Jb.print();5 Z. W. b* |5 v8 Q+ J$ v
       6 g9 ^1 T7 Q+ O9 e+ V
return 0;: e5 W( D; S% w2 S8 ]( w
}2 g9 a2 [6 T/ Y9 O$ @0 O
4 M- `1 U% a4 i# @* ]1 a5 }

3 I6 `  f7 [4 P) j3 G, x/ O  v
3 \. y8 {0 V9 ?- x: y& ]( P  f% G& G5 K" Y
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:, A+ C2 k$ P4 j4 e
1> 初始赋值时:CA b = a;
& Z& s. T5 U' u2> 按值传参时:void myfun(CA ca);
8 l2 H/ b7 ?  b: ~* F7 p" m3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
  ?5 L0 @; n' I8 q( S
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-11 11:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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