鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 4 X" C+ w% b( ?. }
; A) {" I) W6 F. s+ T
class CA, ~' j7 o5 E. [1 m
{
' U* g& s7 O7 Xpublic:
9 j* L+ P. s' L, t) E6 o# O% ^7 H        CA();
3 I" |1 B! ~* u. d        CA(CA&);
& s7 \+ z6 K: y2 l& w        CA(int ,int );
) q3 @( z. l8 l" z        ~CA();  R7 C( z5 W& j  |$ i
        void print();8 V& Z' L/ m9 i/ {

* w5 h& B5 d4 oprivate:, M3 j7 r7 g' T( h2 @
        int i;
9 |1 V0 P6 T" G$ M7 x% @& q. C        int j;
# R9 r. L; N* g3 a# \9 ?};
, [( {$ T# u! N
9 F% C$ c! W% A4 h8 J$ y1 ICA::CA()
6 V/ u! i8 ~, f% j{
' L  c6 Y0 c( e3 H8 I- ~}$ I/ C5 w7 _+ B) k
( k1 B2 w. D3 Z
CA::CA(CA&one)
6 l6 _& X+ p4 {' M+ ]{- d$ Q2 }6 O$ m0 Z, h8 o6 B
        cout<<"调用复制构造函数"<<endl;
3 W+ p9 G. T, J        this->i=one.i;; V5 p2 U8 y8 g+ {8 A9 b% y) T
        this->j=one.j;/ N( u0 U: M0 |/ U* l
}
4 W/ @0 V5 L9 P7 h5 Z3 Q- b) S: {& ?$ b" p8 r
CA::CA(int m,int n)  E9 F" ]' e) o! P) K* o& D
{
8 O4 R! I( n: _3 d% o! [        i=m;
0 S, _+ f+ U5 L1 x7 z        j=n;
+ r7 l; q, m, C* Y1 i) ]/ [6 E( k}. n0 z, `$ n) E3 C- y9 W3 S8 g3 ]. q
+ e" g( E+ u1 ~! }
void CA::print()4 c- Z) V* K& W
{6 c8 L0 s' J' H. \, n8 _' |$ b5 ]
        cout<<i<<endl<<j<<endl;
* ^1 I8 I( ?" p. I}. |, @. L0 U0 P" e  {
& C3 y8 w# c# G/ U
CA::~CA()  ~& W6 J  j( W! U. Z' C% r3 Z
{5 A, S# ]3 c; A8 C7 G" H
}, X3 f) `4 t$ b1 @& d1 ^

# c/ i" B5 m* i6 ?+ j#include <iostream>
; a, ^' w2 ]  m  d3 s; Yusing namespace std;
/ ^/ R2 t$ i0 O& Z, ~0 l( F% w5 g+ a#include "复制构造函数工作原理.h"
% ]# T/ e; y1 iint main(void){        
; p  I! p4 K+ ]. G- ]) `' fCA a(2,3);        
. I  \/ e. J/ v4 ha.print();      
! }, F3 h$ w$ @# L7 m CA b(a);        
! r) Y# }# W2 Ub.print();
! W% j! r. t# V# w' \& o/ w      
( V0 ]' Z2 d) p+ I! S return 0;
# x( W" G2 c0 o8 [& j2 v}/ y* O# o* `0 z9 n& i# v

& X$ y: N: k3 Z# Y+ ]! a3 N; a1 Q! Z& G1 r7 W( S5 a

, ~* G. [8 w1 Z: p3 m: w1 A/ L+ h# c; G# K/ W! r) Q
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
0 }' E8 O/ [" ^: U( a1> 初始赋值时:CA b = a;
7 E2 N+ i4 t7 j, \6 \, Z2> 按值传参时:void myfun(CA ca);
! I/ [. {+ E' J& E3> 函数返回时:CA myfun2();
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层

1 o6 u% e* w& e0 X第一个应叫初始化,不叫赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

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

GMT+8, 2025-2-19 06:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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