鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
0 W# G) h* ?3 x4 I& H/ w( m+ F$ D+ P3 [3 {
class CA
8 n5 P0 A0 _7 A5 S7 e- l- ?{  @2 R( \+ p3 h, ]
public:
, m, N( @: E5 n) O; R/ E        CA();3 [3 y/ {. V3 F8 K( }+ j' a
        CA(CA&);3 A. y" f3 Z  R* s! [, ]9 a
        CA(int ,int );4 L5 K1 W$ m' U( {: Q
        ~CA();
( G4 m* h, J( ~/ K% X3 y) D        void print();$ ]2 t7 p4 c+ D: B
4 T5 w9 v* `4 X
private:
; T- }" G% t' q1 [" d        int i;
- g& S3 M& I0 I0 a+ d! Y. a        int j;
9 T& |' d* ?5 n8 ]9 F};
1 m! b' ~" F1 \/ J2 |+ i. T
" C$ |/ B, ?- c% YCA::CA(). j: r& ]# ^* P- C0 d$ E: _
{2 ]5 }5 k; o9 t
}
' P; `/ ?* G# I  x# T  `9 @/ |" u( L- ^# k: N6 e; N9 r
CA::CA(CA&one)
% Y! v. r9 M4 I7 D& J{
6 J  I) j( W8 q. @        cout<<"调用复制构造函数"<<endl;! T. x% e! F# c6 F2 @4 ~
        this->i=one.i;
! ^+ U1 @, V  D        this->j=one.j;
  g! l6 Y; R- ^3 h7 f( y}) X) H7 g" D1 V5 y# r3 p# `

1 {% [0 S6 Z1 A9 ]6 y5 ?CA::CA(int m,int n)
; h" v1 f- g( b{
% J8 G( t$ C( L        i=m;
: x$ i) U( V. |2 |        j=n;0 I" j; G  Z4 U% Y
}
: X: H* }( C* g0 z6 a+ g. f0 [$ U% m/ O; ^1 h
void CA::print()
; ~" a: w& t' X8 G{; g% n4 s2 L* L, d, A! _
        cout<<i<<endl<<j<<endl;3 A) a; a3 N; F6 i2 h
}( u0 ~1 O5 _- W2 w" C
3 N/ N) c! G. H
CA::~CA()
0 E6 T7 H: l% T8 h{2 x: s! U4 r+ ~! t, U6 U- |; m$ }4 \  J
}0 w" T! y3 t8 j* Y5 Q5 J# f1 \

0 p: y" [6 ~1 Y/ {+ P. z* i! _& _#include <iostream>* n% b7 T- T0 y( h% J
using namespace std;% E  }# m2 D  j8 o  i% y
#include "复制构造函数工作原理.h"
$ I, W5 s3 Z5 \8 e' X  e  y6 d. A8 n8 J! ]int main(void){        1 V8 h1 [5 p# w/ Q) M( V3 p! |
CA a(2,3);        7 O) {8 B) I* T
a.print();      
6 f# ~0 o% _( P0 X+ H. ^ CA b(a);        
+ l" u1 {7 c7 {( L1 vb.print();
+ c! _, P& h" o       9 q( `9 ?# `5 ?5 ~& t
return 0;
: N" b) u# L8 s% a! I* r! x: _+ J}5 G6 D. j- m/ [. Q9 R

# [2 N% K7 Q3 j4 f. P  c& i2 b. ]0 T* |7 ]  T' ^
+ b1 K. ]1 P. S% }. o' Z

8 }6 {; U- l+ l1 b) K5 U
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:3 Y! M5 t" p0 R5 b
1> 初始赋值时:CA b = a;6 u: z, K9 A+ C6 G. Y
2> 按值传参时:void myfun(CA ca);0 \" O$ @( y( D: R' W: I
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
  E8 M9 l8 |0 d6 P  e复制构造函数在以下几种情况下调用:
4 G! W  z9 G8 X$ \1 b1> 初始赋值时:CA b = a;7 P/ R, ~4 C, T. C* [! {
2> 按值传参时:void myfun(CA ca);
  I" L( d& d* ?& s, j) V
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-23 22:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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