鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 % A3 \' S" A8 I% X5 [
5 F5 O" P, L) M+ e# l' f
class CA
6 E% ~& _: s3 O8 ?& x# P  T6 s{
' T0 \' F2 u1 J, vpublic:0 s7 |  J6 n. |: S
        CA();
  f+ \0 Y/ a* `; V        CA(CA&);
; D0 T2 S* y& O+ V/ j        CA(int ,int );1 o5 _" v( K  n1 z; I0 q
        ~CA();8 P* R% z+ e" e% X/ b- E  B! a
        void print();
5 N9 L9 ^0 \! c4 a) W4 Q
4 c' R6 V' o4 [9 j% G1 \private:/ O( i; c4 C% B6 y
        int i;
$ M4 V2 x; i1 {  T        int j;0 d$ F0 K# _0 M" W
};
- t% j. J/ [7 W9 m* m% X# L. i  l7 K
! m( i9 }- a# a. `( gCA::CA()
. L3 |: U* T8 o+ r4 d1 C9 K{
+ }+ |$ m, A  @; o, V$ a}( D2 U( R4 l7 a) Z$ {1 q

0 y+ L7 B/ _) c" O) CCA::CA(CA&one)  X9 e8 H0 W4 h
{
% _) G, v$ v" G: I& f$ P        cout<<"调用复制构造函数"<<endl;
" A. t( @9 K3 R6 A9 D        this->i=one.i;) X4 G$ t: T% \7 l, j. H5 R1 @3 l( _. R
        this->j=one.j;6 a/ b! u$ d0 c" w; ~% |
}
1 z, |& L3 ]; Z: D! ^0 R2 z* Z
: n6 R6 b. o6 L4 X2 HCA::CA(int m,int n)
: T' C1 M% a7 M- K/ Y: v$ n{
3 C) w+ ^% [3 t. l        i=m;
# s( y5 n1 N% [; f3 w        j=n;3 a; b0 G8 h3 m6 J. t. F
}$ y* Y9 g- s- }& A  ~

5 }! z2 f! v7 @void CA::print()& V1 I7 x5 t% i$ t
{: ^1 {7 g, H; B( o0 r! `* y* x- A7 ~
        cout<<i<<endl<<j<<endl;; e3 r2 f  ?( ^: N9 p
}; A* @9 F+ Z% u" m
' \) X/ _" D0 j2 ^  _
CA::~CA()# Y  d& ^: I2 F, W- d8 i- Z& I+ ~
{9 ]1 l: @+ S" V
}
& o, V; T; x6 E* {8 K6 k+ P- j6 }8 M3 Z7 }+ q- g
#include <iostream>
  ^# Z( p, s$ N7 d: p. M9 e" J" @using namespace std;
+ r. E4 P+ P- i#include "复制构造函数工作原理.h"+ P9 V3 J1 W$ D0 \* T( {; r2 ?
int main(void){        
( W8 {' R* }2 P" l# F2 _. TCA a(2,3);        1 U3 X. s3 f" v; b9 _
a.print();       & @8 @( u4 E" P  L
CA b(a);        
! |. s7 F# f- W# @1 Xb.print();
2 g# O% `) ?  s7 m" n6 r       : h' r' d, t# _2 `0 D0 h! \
return 0;
+ f) I* N0 z. n! F7 \+ z}
$ @' E& M- ?# U( A5 I4 v) o3 n% Y5 C0 |5 e

( Y0 q' l, U+ G" c6 ]
# L# R  k, ^/ c- y
6 `) U9 Z. l: K" l
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:3 F& k+ @( m/ `4 b1 v- q* a& j
1> 初始赋值时:CA b = a;
, ?4 w# `; V1 `! B. y2> 按值传参时:void myfun(CA ca);+ D; T$ J! I$ p7 M6 b  ^
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
, a! _5 h, X6 i1 b) q: G( E2 w复制构造函数在以下几种情况下调用:( T0 t( H, k4 R5 C
1> 初始赋值时:CA b = a;0 ~$ \8 K1 W2 c% `& o
2> 按值传参时:void myfun(CA ca);
% W3 S0 n; ^3 o* f
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-3 08:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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