鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 , |. P8 v8 {2 x1 K8 S' m5 ~

. p6 n2 \0 s- Kclass CA
1 K" T) I  q6 h6 x$ W{) E6 m5 [0 G. e0 q
public:( M- @' n: f' C2 B. z
        CA();3 X5 j% ]/ E3 S2 z, _* N4 _
        CA(CA&);
# F3 M% C8 I  \. O        CA(int ,int );
/ T5 @$ A+ X6 h  n/ \4 @        ~CA();) y" [0 T+ r' z% @4 S* n- U0 q- @
        void print();
  u7 w! ^$ Q. b2 ~5 W# Q" R7 K* P. x( {( C0 z" K* v
private:& I* C4 {; w8 t( X5 J5 g8 {
        int i;
% y8 k7 m; n; C3 v        int j;
. }8 u! f, F& ^& Y};, V% p8 h$ h# q+ [
4 m5 t5 V1 L# P5 V# M! N
CA::CA()- V+ A% S! a) G3 z+ x) }; @5 j
{
- N' q2 ]2 `7 S, s( m( _- A}4 C5 L/ ^' Q; Y" E

& B) S+ W4 j- {) j6 @5 NCA::CA(CA&one)5 L" X3 {6 e5 ]2 E: R5 y
{
  s* z( b. L1 @! @        cout<<"调用复制构造函数"<<endl;4 ~9 t  L0 c4 v* y5 ~' c
        this->i=one.i;0 ]( M- w9 z2 @, R7 N" W
        this->j=one.j;. A% I$ ?: d, ~. y( v1 P, T0 M
}
. T4 |* T  m. t2 M; X4 U$ p
4 K, ]! I0 B. b* `CA::CA(int m,int n)
1 ~: t% m) h' b" T3 i( N{( K  p; t9 K0 a( y- x# |
        i=m;
5 y( f; T4 g5 I& v8 b- h        j=n;* C* u( n4 ?. d
}8 r' D( i9 @/ {

) U  Q% X* w0 U( m4 wvoid CA::print()
. l2 O# _, F$ t9 M# G( d$ k- X# U{3 u: o' T4 L) b( u# |# p2 G( Q
        cout<<i<<endl<<j<<endl;4 e' s4 Y) v  r
}# [# M: x6 A7 K! t9 j& n3 [  g
4 ^$ _; Y5 b3 P( n  @% |
CA::~CA()4 W. m' s2 R! y1 t" f4 p
{
5 x7 [; F- V/ A1 l}7 j, r; i  e  Z5 I( M; H
9 q! g. {; H2 I* w' `; I. E
#include <iostream>. X& f2 L3 G7 A7 L* H9 _) ]
using namespace std;% j+ v( g  i5 |+ a
#include "复制构造函数工作原理.h"
% N# [/ ]; k$ ]: }. eint main(void){        ( `$ e( _! K6 q3 m7 z+ [; ?' L
CA a(2,3);        ( E1 T/ W# L1 z. u7 c
a.print();      
5 ~: R6 P4 n% q, c5 V; [4 } CA b(a);        
# H- ^. N- D+ _& y$ Zb.print();
5 |# S- J9 t5 w% E0 a      
3 q1 ~( t) g/ I' r return 0;' d+ C. s2 A  e. `1 j
}
: ~5 D4 f% |% k0 N3 H. h& ^( I$ X7 a9 k) v
# c+ E3 j8 K, J
* L0 }1 Y. H$ \, m# }! E

& P' D7 T7 U" F& M
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
& t1 }5 U1 v$ i1> 初始赋值时:CA b = a;
" z$ q, D8 f2 l2> 按值传参时:void myfun(CA ca);  i* _+ e4 R1 e! x6 b; P5 n
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 # v$ J& V4 Y3 O8 |3 F
复制构造函数在以下几种情况下调用:8 q$ _1 u# G  ?" E) e3 D
1> 初始赋值时:CA b = a;$ Q8 u% }4 m% k( U8 S6 `+ e
2> 按值传参时:void myfun(CA ca);
4 L# k2 g" {# m; \
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-11-30 04:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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