鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ; |% I7 j* u' d0 A

& ~2 L2 m/ W$ V! ?2 S" P0 Qclass CA& m2 w- c5 Y& t/ V1 I
{
1 f+ p' P6 i5 c/ b% @4 P4 {* tpublic:2 g  J" @5 k1 W
        CA();9 r5 K8 ^# K# X5 n( L8 Q8 k
        CA(CA&);
! _8 c( u2 o# z& p2 R; Y6 x        CA(int ,int );
% d; F8 a9 z, d        ~CA();
) v3 A7 O9 {- \( U+ g8 M2 L        void print();. Z2 Q4 E& G+ b: L7 a
6 [, Q( D* C1 \4 C3 ]+ R8 j
private:3 I" O! C" ~( Q8 g- N0 C
        int i;
4 Z- \6 v0 f$ c2 u9 v        int j;
& n* _6 t5 S5 O- x2 N  p% a; ?};
% ?% t- v, g: l; K, H! N
7 c( w, H' {9 d: DCA::CA()
: ]) q. A+ y) F/ o$ B3 {# H{8 z1 _9 q% l: }/ d, R
}
* @5 b; u, {( r- E$ x4 Q
% Q; i: u% w) ?4 y7 h- Y& |CA::CA(CA&one)- k- Z5 k# C; s4 j3 B: z# ^
{4 M4 J% O# ]% [" |/ [
        cout<<"调用复制构造函数"<<endl;* Q* W5 m# J% p- ?) C/ C9 {
        this->i=one.i;
5 r1 O! o4 W4 N1 U        this->j=one.j;
) t5 n8 x+ f- M' }1 R! q6 B/ \}  t# Q+ i- e6 h2 m
" B; x  S5 d$ h- y! ^' }! m$ s
CA::CA(int m,int n)
3 e/ M# x5 O/ u+ U9 g& g+ y{, O0 F( e0 r7 w- @' T5 m+ E
        i=m;
3 u% Q/ i# F6 i6 e' \        j=n;4 J9 o$ L2 z* U. ]: N
}9 z! M4 Z" A8 q7 {9 o6 J' x- @2 P$ ?

& K% |2 k2 l, Rvoid CA::print()
& i5 H8 X# _7 B% s3 h{" t, U! Z* {$ Q( M( z
        cout<<i<<endl<<j<<endl;
3 K  L0 B% o+ [( Q}, @$ B* h5 T" d0 S- L% z
2 N/ s4 a" x0 [% N5 h; g; q$ @8 [
CA::~CA()  B$ R" c* [8 j
{9 I& e! v. A# x  m- y7 F( y
}1 y8 W, ]! J* Z" ?2 Q, a8 |3 l2 L

3 G. O8 n: e2 X, k#include <iostream>. U. T9 `8 D- T( C1 B$ y6 a' p3 [
using namespace std;
6 C3 ]; a6 ~9 ^7 M3 c! e. m#include "复制构造函数工作原理.h"
% x) U* j. E1 I, C8 Y1 Qint main(void){        ! V  a3 J$ q8 p5 P' ~$ Y" w1 a
CA a(2,3);        
3 a8 W' r% y7 aa.print();       + z6 S4 v) _' X- p
CA b(a);        
, N$ Q. T, P; b3 \# q4 ~5 xb.print();/ S* E! |; N0 w8 O" _& W
      
: U! Y7 F, q3 j: G# E return 0;4 \0 G9 k6 z4 `' Y9 f8 a
}
4 N5 {0 E% Z5 ?2 |: z5 P, J9 b
3 Z: T% q" j1 C5 j2 M* ~3 @, y( `/ ~5 T; Y, P4 q5 p% k* G

  R! J$ }; O* A& p9 N9 a8 B* K# w. w! g* ]2 J* i( l
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:# D: |$ J0 X7 H" T" e) Y  j
1> 初始赋值时:CA b = a;
  j4 ^+ T; |6 s2 d' _7 Z! y2> 按值传参时:void myfun(CA ca);  }0 i% T9 u0 J1 R. [
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
  _: K. @8 u" r) t* V* C/ h! J复制构造函数在以下几种情况下调用:
: k8 j+ r' U2 ~7 ]# Q  {2 x9 |- o1> 初始赋值时:CA b = a;
, K& T8 Y3 `4 [  k, J) N2> 按值传参时:void myfun(CA ca);
9 ^8 r+ U( e+ Q; o+ |/ ~$ o$ d
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-11 01:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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