鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
  v4 C, @! ?: S- V+ q6 G' {9 @! R  {7 E; O6 d6 O% o
class CA8 @  ~0 [( j( g6 ?! \7 W" D' @
{- v3 g0 O! x# F' Y
public:
3 i, u4 J# K) Q3 \        CA();4 n6 ?$ b  w) A* M, F# T
        CA(CA&);1 i. [0 V) V; Y) b5 w* N: D
        CA(int ,int );
- }/ o- K3 y% }+ l        ~CA();
0 {8 a( ]* r4 w6 R* \7 y        void print();
8 E  ~/ w- u: b- h8 a  C: {
/ C& i+ g: q0 I4 S2 k4 Cprivate:0 J' R/ G; q6 \* W2 @0 o0 M
        int i;
# M" z/ v! b) \% }5 @        int j;8 \9 V2 u. |2 x! T+ @+ m/ a
};
4 ^, F4 ]7 D6 r
, i% S$ Q7 v9 U9 @  R( T' i5 B6 FCA::CA()
+ @- f. J9 ]9 l3 P* R  V1 e# q0 g& C0 n{8 Q! `9 L* c# n% z& ~
}
/ B2 s4 p: p( T0 x+ h# }! `9 g. j8 P* D
CA::CA(CA&one)0 \6 v: |' @2 |* c( n  j9 o% n
{  `: N8 N8 B/ s% |# \. Z3 ^
        cout<<"调用复制构造函数"<<endl;! u1 b; g- H# ^: K1 u, q
        this->i=one.i;! ^, _' z1 Z$ l% a
        this->j=one.j;9 g* Z9 s( b) z" I: Y
}
* p* D3 b$ G& Y! u* }7 F$ T& C2 ]3 p- @* y
CA::CA(int m,int n)9 S* |  O) t" N1 q+ |
{
$ e/ E/ i0 ^+ J0 n! Y' q3 s  p        i=m;
( v# C& E! ?  R# `        j=n;) t1 K1 |! R, Z: e
}, I3 G* q, M: k# W

+ |3 {& S$ S4 Y) V& ~6 Bvoid CA::print()( S# e  `. h+ j/ o! b! l$ s
{0 t/ ~; o& C, J. c
        cout<<i<<endl<<j<<endl;! {: e* {% Z, ~! k4 {2 {1 b
}8 D( p; _% `( `. M* K+ m
- M0 R  y: S7 J0 q/ B
CA::~CA()) L3 k. b7 p/ k  N7 V6 f; Y
{
  q; H' s1 P3 `# p5 e$ W& E# Q- u* c}* @7 w+ @" {3 J+ ~" _; j; h! R: x/ t

6 G2 S3 t4 m& \. s+ J$ L, Z, R#include <iostream>  e% A8 |" Q! L* X; \8 J4 z# I
using namespace std;. {' h0 D" J0 b4 g) n5 T
#include "复制构造函数工作原理.h"! k( }. K5 w% ~( u' X3 I
int main(void){        
+ X1 e% U8 K0 B- GCA a(2,3);        ' L8 A7 m% `" C" g" T! d" A
a.print();      
' z' ^5 L+ ^; K3 n CA b(a);        
! r( ^4 ^& q0 A( vb.print();( d$ e  g0 u" O7 u! M# [- K
      
( l' k) Q, r. q6 V/ H/ v' Y7 X+ j/ _; T return 0;" |. O: K+ s. D/ C. ]; f! O- [
}6 g+ r& U( e' W9 q& ^
2 u6 W9 s/ a+ N/ p
3 |) A# g: f  m: C6 `5 P/ r5 Q

6 O. y9 t5 n6 ~, \' I: b( Q
: E& @5 y( o( f: T
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
* w+ h/ R/ [( ~4 ?* _  k* q1> 初始赋值时:CA b = a;0 w1 @1 `9 l7 x' u! f: _  ?0 ]
2> 按值传参时:void myfun(CA ca);
& ~; G4 [/ p0 |; ~3 [& `/ }7 K2 Y0 Z3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
% W. k- Y, \0 p* K& j7 `9 `" A复制构造函数在以下几种情况下调用:
8 V8 u2 \* i* }$ R$ O1> 初始赋值时:CA b = a;
9 u7 Z, [  E. O$ J/ \* X; M" K! ^2> 按值传参时:void myfun(CA ca);

, `% O3 s4 d+ z; A2 \* k第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-21 16:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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