鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
6 P' v) r9 b& j, q3 v% {
( g5 t" t* z) E- L- l6 N4 Cclass CA
2 P& ~- S6 c$ ~9 ?  M  S{$ R- l2 N5 j! i6 N- }) d7 F2 _
public:2 N: b8 n1 \) e8 _4 j
        CA();
, L5 K( p: G( K# m+ j8 q8 `9 R( I        CA(CA&);
* f. O1 A# M# _" A        CA(int ,int );7 a2 ?0 X. S# Z
        ~CA();1 H- ^- F! J+ _' \0 Q& G+ R5 |
        void print();/ {) Y* |# G9 V/ |. v* E
! z4 v9 G. K5 a
private:
. @4 P3 i  q' P2 Z) l* q, q5 U- \* g        int i;5 i- [$ m* J& E( A( q5 @7 P
        int j;. h/ H6 L+ G0 ?+ J$ m; G
};
9 D/ f6 B9 L. p* w  F' p, F) a5 t2 N+ m/ ]+ }# ]( N
CA::CA()+ k6 a$ q2 k. E
{. |$ R2 d' t) M; d# }
}
: Q) H- f0 D5 q& z5 H) m7 t' R. l; h# E! e4 k9 k, M3 f
CA::CA(CA&one)
# f& n3 V* Y( l& j/ b+ O" s{( U+ W' r( N$ n8 n. e4 I
        cout<<"调用复制构造函数"<<endl;- ?& n  m' g/ y/ ~
        this->i=one.i;  H5 Z+ T, B; r* V: ^& b  ~
        this->j=one.j;
( h9 o, Z8 E# k" \/ ^}+ S! V) }, A; j% g+ d
+ L. U' x; R" s: I: C
CA::CA(int m,int n); X/ R4 O! e5 R" D
{1 _5 Z. L' V  `- y; L/ J" i
        i=m;* b. y4 b, I) m3 \
        j=n;
5 |+ o: C4 L# x8 i  D1 e( T9 ~}1 X% r  G" {' F' Y) M( _* c) Y
% a! ?* n( g- V6 u# X; M( \( x
void CA::print()
% I/ g6 W! e- e+ n6 \" K{
+ E2 [. F  L; z7 @) M6 Q! X" k* T        cout<<i<<endl<<j<<endl;$ ]$ z, z9 [5 i8 z8 X: h: Y# U
}1 {9 C5 T  Y9 z. B; h& g# j0 a4 H

" Q& \" }6 s9 r8 `2 a; LCA::~CA()) z7 f+ m# U6 W) k
{
2 N3 D7 z' _: K}& V8 b: m  n# y. F+ `% b; z% U
1 r1 m/ r! ^, I, X
#include <iostream>
% M2 v2 r' A4 B4 J+ b! h- N! B3 E6 @. Kusing namespace std;5 n9 F* W2 ^, K2 z/ _, v4 G  b2 h
#include "复制构造函数工作原理.h"% N- @7 A- g  n9 Q! A& X
int main(void){        & q6 T' }) ?1 }* @, K
CA a(2,3);        ! m4 J, p: m& M- d) C( L
a.print();      
- r  P" i" }$ d: `2 x% c2 F: |- p CA b(a);        + M1 t6 w" X. _# R
b.print();& d2 d$ v/ ]$ y
       3 p& r) r4 \/ ^* n
return 0;. L& I; O, n+ _) T& W
}5 N+ D% n. z% R) D

( s* O9 ]# j# \( Z! n6 C  ?& q# T  u% i% H

, s3 W; _* r6 S1 a6 Z4 C. R
* n8 m7 t: E: R' o8 Y$ A3 O. {! N
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:1 V2 X5 W) D% \: B6 J
1> 初始赋值时:CA b = a;, I+ f1 t2 T7 e7 d( J
2> 按值传参时:void myfun(CA ca);' c: C) r8 j) s/ l5 l4 T; J, Y
3> 函数返回时:CA myfun2();
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
, f; a% f1 W& y( j+ B复制构造函数在以下几种情况下调用:: m, d1 b  u) W* c
1> 初始赋值时:CA b = a;6 Q% N0 y% M+ k7 `; o9 M
2> 按值传参时:void myfun(CA ca);
- d7 f# c7 B  E; p
第一个应叫初始化,不叫赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

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

GMT+8, 2024-11-22 20:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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