鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 - H& f. w( S& u$ f$ g6 E
) E3 k$ A/ `0 P, g0 w0 K7 v
class CA+ H9 r7 G6 z: V1 l5 K
{
  A, v9 J- N' I0 Opublic:! ~$ `$ g  j( Q% t7 Z# g
        CA();
  A! H( }- }+ Q6 z0 k        CA(CA&);" y8 A8 h+ E5 r3 {! p+ q
        CA(int ,int );8 H7 K' N8 Z) g
        ~CA();
+ F  p/ F3 s0 L$ F- r! @$ z7 S5 t        void print();
1 g' P- p- v( H2 R6 Q2 b
# V, l7 I7 a9 D1 v* s9 Pprivate:
: y3 B2 F3 A5 k2 b" q        int i;
& q( o# i# j9 u( V. `- F9 ?        int j;* \4 o$ g& e( g) p
};
6 @2 E! i3 W. A! Y( I8 P! S0 y
" B0 E) Q7 d  w# lCA::CA(). a" J8 C9 c$ i9 {
{9 `& C) x+ b# A" k0 e3 C7 B4 ?4 r8 U
}' q' t4 s. H& q: j9 ~

7 C1 c! t! t9 T$ B. u6 K/ ACA::CA(CA&one)
! u1 [- G+ k+ [) ^# q{
6 @4 @4 Z7 J3 F8 S' i9 w$ a        cout<<"调用复制构造函数"<<endl;9 @! I: S" H6 G
        this->i=one.i;- q4 Q5 ?! p2 D7 ^% c
        this->j=one.j;6 M+ {3 y7 b: o9 d' h9 w
}  H- X! f9 X2 Q/ i% u3 s3 k

5 ?$ o, v  l% B" E! T8 b: gCA::CA(int m,int n); m! u' x& U! J. n3 ^! K4 u6 p
{8 ^) ^- \) U9 R6 L* G
        i=m;
4 ~" E6 s  l, _0 s4 v        j=n;
' R! {8 y" o2 t8 n2 t4 F}
; x/ p9 r9 K! H" c% N" t+ p5 l: ~2 t% o5 w$ j( S  I
void CA::print()
3 \& m5 M  p/ a* V{
2 o( u  v  q3 q; s$ m        cout<<i<<endl<<j<<endl;
- T) S( {: L! Q# y  c; i- C}! t2 O$ D% O* U0 {
9 x+ N- Y! R0 D; W" e# U
CA::~CA()6 P7 A* r1 h: ^" Y5 D" [
{+ ~; A" u7 y% k1 m
}7 e! f' C- K) k, d9 U
4 I4 }" g5 s, S& z
#include <iostream>% ?$ i4 p/ C5 Y' @: k
using namespace std;
( ?" r/ O% ]$ H* B* B( X#include "复制构造函数工作原理.h"
' b: l1 d+ c& Y( j+ f5 vint main(void){        0 {7 d/ {) l5 h+ x
CA a(2,3);        : T4 J3 A. U+ h1 d( s( l( v
a.print();      
+ H4 ?+ z0 j! T* `$ @$ y1 n CA b(a);        6 Z% X1 W3 |- H# |- i
b.print();
  L, P. W3 j; V; K8 c       ( X3 n0 t& Q% t1 k
return 0;
+ u, b+ U+ U* n7 g1 Y5 e}' o3 O) O) z; l0 o% r2 F2 _  q4 ~

% ~! Q7 L3 i7 D; v8 O/ A0 |+ L* y0 {. h8 p, r% n3 |* M% z

' _9 ~' [, H. l+ h5 j4 S1 f3 e, K% t! f  n4 U8 ^# k) x! T
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:* B+ i, k; _- g
1> 初始赋值时:CA b = a;6 b! a) e1 o" C7 Z+ C* b% V$ O
2> 按值传参时:void myfun(CA ca);
* i& d& \4 s% |+ H+ x1 }/ z  f3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
4 V/ i3 L  ]# G/ L复制构造函数在以下几种情况下调用:; N5 X& S2 ]) j- \9 T6 z7 v+ }
1> 初始赋值时:CA b = a;& }+ @- Q& `9 j1 Z% Q
2> 按值传参时:void myfun(CA ca);
, @  x) U0 V* [4 J# u9 F
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-9 05:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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