鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 & \5 C. [3 J" V4 u2 s
  C* A8 M) l/ D) m3 Q, g: n( ^5 I, |
class CA
. [9 u* L' y: k5 {. ]* Z% [. L{
/ o% r3 O* [" Y/ v( wpublic:& ?7 C" Y- Q; J% V) [4 L+ g6 U
        CA();
! C! ]+ h% G0 e3 S1 k8 v: {        CA(CA&);0 j. ^9 Y6 q/ X2 i' f
        CA(int ,int );3 \  j$ P6 m4 z- D
        ~CA();
" n: s( N- X- G) N( S        void print();; n) l/ }' w5 b

* k: c  c' Y# u; s1 n. Y5 eprivate:
) ?+ C" @9 }; \  s: k        int i;+ B, h1 [0 B& u8 [
        int j;
0 K/ m/ S& w' F" W/ L};/ g/ @! r$ k/ ]3 t6 ~
) [, w3 i9 ^4 ~7 q: k0 P
CA::CA()
2 V8 S- L4 _* ]# L) T  y{
8 _  r" [: i7 `( _  s}/ \. T$ ^+ M2 H0 M3 O

6 F  g' f' V/ M$ q8 Y$ TCA::CA(CA&one)
, j2 h5 M4 R, O: y: u{
* X. l; b5 T* w; |8 M2 ?: }        cout<<"调用复制构造函数"<<endl;
; J. w& `) G! R1 [+ O        this->i=one.i;
9 O: M# N: Q( v        this->j=one.j;; C+ t8 G; e& S% n, B. y5 Z
}
7 U8 Y; i* U( E  ^, `+ h/ `
# u4 p& W% Y" S4 T. O# W# bCA::CA(int m,int n)* ]7 v7 r4 e1 {! W3 y% A
{: F: S, S! r- X2 [2 }8 v
        i=m;
$ p6 B6 ?" ~3 d6 m4 s/ a        j=n;
4 E5 }) Z5 P1 C% d. f}
8 v3 T. }0 ~! K$ _0 B8 z
$ e1 j. F! l0 @- [void CA::print()5 n1 o9 @0 u* M
{* `! W% h" t5 C; k2 U
        cout<<i<<endl<<j<<endl;
* X3 q, e) Z. s3 q8 E% A. U}
' R! \- [' P* ^% L
$ ]8 `1 G( l0 T; M* Z* f2 [CA::~CA()* S  W/ ~) k/ z4 b) o9 W
{
$ Y% F' X! x: a3 L4 m}
2 n2 h- Z, d! [! h8 }
+ ?! T2 a$ n0 i7 G0 T* O# S#include <iostream>
- ~& }( k* t0 u) o( Lusing namespace std;
  E, a9 Q  A7 ?  B#include "复制构造函数工作原理.h"
4 {3 H  ~- Q- W, a+ Eint main(void){        
0 o2 e% i: P# C4 v6 ~CA a(2,3);        
& ]9 D5 B" G/ L; p( Q% [a.print();       * `$ j& f$ c8 ~2 Z1 M0 p8 e
CA b(a);        7 C9 h3 h! |$ _6 S
b.print();
2 a5 p# |2 M6 [4 H9 h8 ?      
. w9 L4 |3 W; P2 | return 0;0 L& ~- S" i+ X7 ?' V6 W
}
5 E, w% G7 C4 r; k& U
7 \, [3 x% q5 |
* P1 f/ t9 x/ C: |7 L6 @
6 h( P& L& [/ M; p  c8 ?3 m& v. P5 p
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
: U9 ?& ^' a  a* `$ `1> 初始赋值时:CA b = a;
' v" ?6 s* [$ [! j! a2 K2> 按值传参时:void myfun(CA ca);. Y5 N, f  r  Q$ f1 g* }6 I
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ) _2 N$ T. w$ D; z1 t- J
复制构造函数在以下几种情况下调用:
# z2 R5 t" E; ]2 M6 j- t9 y# ^9 x1> 初始赋值时:CA b = a;
+ O, \6 w( ?( B$ X2> 按值传参时:void myfun(CA ca);

' T+ E: |; y* y- w$ m1 R1 k第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-4 05:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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