鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 1 Z2 C% U$ T4 X0 R4 \  T; R

) d, [1 q* G: r" Zclass CA' ?4 Z- W7 a; L! F, [( o; G  e
{- V5 ~1 ?; p6 U5 C9 C- J3 T
public:- _/ ]" ~1 c1 R- Z9 Q
        CA();
9 G% U; R* ^- P/ [. y        CA(CA&);# @$ H* |" Z' Y0 n* Q, y
        CA(int ,int );
) c. s* p* K5 a; I, ^        ~CA();$ f/ o) m  W, N6 l3 V6 g& @
        void print();
+ N8 ^  y* R! N/ i" J5 m. q4 f, E9 ?6 ^; [, P) J4 R5 P
private:/ r* A/ z. s  I$ s; O& G* _& I5 h7 t
        int i;
* ^) S$ k) @2 O0 p7 c  Y" b4 `        int j;
/ d4 v: |2 o" ]5 \4 m$ ~+ u7 c' j};: {0 ]5 A( B5 Y" O' G- `+ T
# C+ j/ o, }, {: y$ g& w
CA::CA()
# N1 L4 A5 n0 E$ s* d8 C{+ |4 g' V! I6 I4 [
}
+ f+ @7 \* Z4 t) i! H  I6 |% e' G& }/ j8 Z8 e+ a2 Q
CA::CA(CA&one)" p' v/ R6 z. x
{
% J" N# ~, c" }; i) \" _8 c4 W$ w        cout<<"调用复制构造函数"<<endl;# f9 V- ]) @  a( B& h: M, W2 Q
        this->i=one.i;* l  e, Q4 L: l) e5 K& ]$ q) b9 l
        this->j=one.j;
. i. _- K7 u9 z! V}
) r1 G) ]5 t. o3 i9 v1 a7 c2 E2 e' [& m
CA::CA(int m,int n)
0 [" O5 I. Q% K+ L8 \{
0 A2 Z7 d# c1 W9 L        i=m;5 N& T2 g2 R8 M
        j=n;7 A: m: m& Y* z& P! \4 N
}
7 u, p( F; B2 J% ^/ m6 B8 U3 \& w* J5 h* J6 ?
void CA::print()
9 t6 s1 A, i- b4 c0 w) d+ x5 d9 }{
+ Z# w1 [8 R* ?/ N7 w        cout<<i<<endl<<j<<endl;
7 {0 f* g7 N: S. ~' d4 G) b}
8 k  A  |+ R, [8 P* t) `  X$ i. Z: T) ?& M6 F
CA::~CA()1 K2 t* z" Y$ _9 |9 W
{2 D6 k' V8 Q3 y
}
7 Z0 s- R( p; G  e' i9 B  @& ~' e9 _8 E& {" a/ ~0 u
#include <iostream>
- w) b) E' d1 @2 d+ [; Rusing namespace std;  o: z) b$ D# P" w# s6 `0 r! B
#include "复制构造函数工作原理.h"
# O- f) R7 E1 d5 i6 {int main(void){        
, N) a1 W) j+ Z/ xCA a(2,3);        ; N! }7 ?% Z, l, H1 \1 H7 O; @
a.print();      
0 @1 H" L! ?4 V* X: _/ v CA b(a);        ; ^" k1 Q& y0 O; a( ^
b.print();
$ d0 R% ?" n. I5 \; ^3 ?       $ c4 M9 Y  `4 }! u0 E1 r7 S
return 0;
* t/ @' ~7 O  @6 C( K9 K" S0 z}# I, z4 c7 s7 j; B0 ]
8 K5 k$ \9 `- N3 ]  v
! O4 g6 ]# l& ^: R+ D
- e; ~# A! N" o- @; m
. j- ^, N& E/ d/ c
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
& |3 b% N# V& F% S1> 初始赋值时:CA b = a;
9 H+ b1 k9 e! h8 e* a4 }. H2> 按值传参时:void myfun(CA ca);
! L! ~+ _  Q! ~3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 " b% I5 g' b/ H! r0 u
复制构造函数在以下几种情况下调用:
  r+ Y2 j$ {0 c; Z- g1> 初始赋值时:CA b = a;
8 |& F! }( A3 r+ u( _+ t2> 按值传参时:void myfun(CA ca);
  w% H1 @3 X* }5 J  d, v
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-2 16:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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