鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 2 q/ _# \; G( t6 h% x5 O- m4 R

4 Y! ]: u2 \! C' B! s6 F* c- o0 Eclass CA% p8 m: q+ c' }9 ?& i* r
{
8 k1 q4 }0 }' w6 zpublic:
0 U4 k& ?& b9 f* ?  p8 L' x. o        CA();' A, G8 X4 E& k* F. l: F
        CA(CA&);0 b2 N) h! J$ z- v2 d& O) b7 Z, ^" V# K, \
        CA(int ,int );9 O* }) B! ^8 l/ H
        ~CA();* D; f; ~+ d8 ]# S. Z( x
        void print();
" n5 X( q* i! |/ x1 @/ h
1 l/ S/ |+ _, Aprivate:
1 @! D4 E9 A1 Q, t, ^+ J. [        int i;
" b( d* u+ Q8 [7 m3 R  R" S1 I" h        int j;
' N! G% `/ T5 P9 U5 U& R};
1 u/ s% L" N/ h; P+ j3 X
5 F& k; c" k; l" X2 [( c& N% XCA::CA()
) E  T. V1 x* O2 F6 O+ O8 B{
, Q2 Q: T8 E9 ?5 s: o2 E}
! u- f, C* N! Q9 {* _6 Q" x
& s; B2 q# t7 ~$ qCA::CA(CA&one)
- I: E- ?6 t. I: T{9 s3 y4 p8 b* F. Y& i5 \4 {7 Q- _
        cout<<"调用复制构造函数"<<endl;
2 s& ]( O# F# j. |        this->i=one.i;
7 Z1 K, I1 {! t9 [" r& }+ Y        this->j=one.j;
- |4 B9 t1 Z; n8 n9 t* T1 N0 X}/ `2 G1 H8 i  q$ f

8 K# T3 O8 r. k6 fCA::CA(int m,int n)
) }" L: d5 b% r& ~( A& @" Q1 P+ \{
& J" a; }6 {% p" X4 ~8 Z: g        i=m;0 y$ t# _4 `! q) ?0 z# a. q
        j=n;
: N$ c$ t" C3 l/ i  x}0 ^, H. v! E0 s0 v/ ?
( }0 ?. j9 Y& Y2 v4 p1 J
void CA::print()& P, s- N: B. U( v' [% G
{+ C, e% {( ^1 ]- z% Y& Z4 O+ C/ |
        cout<<i<<endl<<j<<endl;
9 D5 Y: K% T* {) M* f+ T}
+ g" a/ y2 s7 t  p* o. X
  K& h8 V- M- c/ z! G# GCA::~CA()$ z2 m% w) D& }
{, ]' u. y; X5 y2 ]
}
6 ]8 ~6 d$ u+ t  ~* z, W" R, `3 y( V6 Z! k' R" a
#include <iostream>
& G. F; S  @1 L* {4 D( [0 {9 }; H- Uusing namespace std;( t* C( {" }& w: y2 Q$ |7 d
#include "复制构造函数工作原理.h"
# Z) K0 @6 D! ?8 E2 u( @int main(void){        
4 m5 {4 O, t( OCA a(2,3);        " N' y3 _8 |3 s, V! ^
a.print();       : B- x1 B- d7 G, e
CA b(a);        
6 O; x/ U/ V% Q: q9 p, ~b.print();+ S: P4 Y' u8 ~
      
- F+ o- l1 S" c; Y( H9 O return 0;5 X' T! z! ^4 X. w
}
3 K' c& l7 e6 j5 f
) f! d9 r0 d) F; n8 @/ N' V3 R' ?1 [" ]6 J3 Z* k5 {( F
3 b  ]" K: A" U
3 w! M2 g: E: y9 O, @& t5 t
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:) o7 v# q' ~+ G  f5 Z0 O6 ]2 d
1> 初始赋值时:CA b = a;
0 S. ]' m+ ]3 A/ D, q7 w0 _. n3 V2> 按值传参时:void myfun(CA ca);$ O7 k  _& y. N; n$ {
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 : B4 h- m/ q" N) z/ ]; {
复制构造函数在以下几种情况下调用:0 [0 S) w8 @; j6 K
1> 初始赋值时:CA b = a;4 a. ~) ]9 B$ H7 R% o; q
2> 按值传参时:void myfun(CA ca);

2 J# S3 \9 Y7 P3 {1 R( o  X. N第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-6-14 12:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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