鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
5 n6 X2 \* t( h% g
: B; I- \. r, @! h! ?# L" e3 \4 C7 |class CA
) {6 Q# Y7 H) t3 S: O{
1 n6 s5 m: f+ |3 Jpublic:
2 ^- E- z1 q, H7 W; p; F* u- `        CA();
8 o9 ]( Y0 ?! {/ F) f8 [- A) ^/ i        CA(CA&);6 z2 |2 |" u5 S
        CA(int ,int );( \3 N$ {( U+ V$ X
        ~CA();) _5 Z( Y6 D9 H3 S2 N: a1 H
        void print();( d6 S5 H0 x) R! p* f

6 L+ Z( O, |. X- u# vprivate:
" H# p& R: X0 B  a: t        int i;4 c. N* [, |0 K( S, M- H8 z* I) u
        int j;% W9 ], s3 J9 d) k; `% S( m
};
. ^9 W- j9 |& |4 t' B0 q9 b9 ~; n9 l4 S6 f  f$ X; c
CA::CA()
  V2 Y' r; _5 o; J{1 D; @. b$ l0 B; ~8 K7 P5 z
}
8 x+ L$ X' m5 U; n; l2 C( U' W: _0 C+ S
CA::CA(CA&one)' Y- ]2 d) E$ r/ i
{2 E. K8 t/ S: a+ P
        cout<<"调用复制构造函数"<<endl;9 _  {, _4 }; b8 Q1 S
        this->i=one.i;
8 [% U2 G. R* b9 ]        this->j=one.j;& y! A5 Z. M1 K# t( m* d
}( Z& P- m& O. Z) Z: }' e

" b, P/ {+ U) h! w. j  Z: ^* q! GCA::CA(int m,int n)
) x- Z1 h5 q- ^* ]" O2 U+ F{1 h% H$ P) s8 [( O
        i=m;  ~  H" s5 C6 w) l+ b: }$ p
        j=n;
! ]  \, [/ q6 v* W}
: q& P' D  t) i9 w
* _3 M: _8 B; g5 B8 D6 nvoid CA::print(): r$ H' A) q# i+ _. q5 R! @  p( k
{3 J: G/ H9 R3 O% y3 V
        cout<<i<<endl<<j<<endl;
* T( X3 P% M. t3 W}0 X# d- u, B" N" g% A
. |" A& _: e" b" L9 t: _+ x  U
CA::~CA()0 q' k8 |5 Q! n9 ]& V
{5 z$ q6 ]2 [( M* q3 X3 i1 h
}3 N) M3 k9 H7 d% Z  \4 H0 Z: q

( a0 Q9 o( u5 a# f#include <iostream>
, _: ~. P6 k& J& `using namespace std;
) H& L( }7 E7 g3 |( h/ J9 o#include "复制构造函数工作原理.h"( x" b9 H* d: ^3 x1 Z2 g+ s3 f
int main(void){        - J0 d7 l+ U3 f! M5 X# O; E) L
CA a(2,3);        . I# p. N2 C5 D, z2 H( }6 E
a.print();       9 I% F. [' E8 w3 Y9 v8 W2 q
CA b(a);        5 v! r$ U# q9 S) e7 O
b.print();0 g8 y3 F" D/ z' N7 y
       3 V2 V3 w) S, e  I
return 0;
: A2 T) }5 u3 l3 J}0 F- n7 m# ~1 a0 _0 V* D1 B

1 N* D$ ]. `- v+ Z% g
1 J- k6 g% g8 n3 {8 I% B6 E" g" [$ I# ~

$ i0 O2 Y6 ?1 a- x& U; I. w/ S
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:0 A/ S/ |# c- P% l" P; }# B# Y
1> 初始赋值时:CA b = a;$ z: q& r! [2 i  @0 q8 V3 _
2> 按值传参时:void myfun(CA ca);
4 U$ f; T% ]3 }/ u1 l3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
7 E& {7 S0 _8 k( N2 [复制构造函数在以下几种情况下调用:
  A2 o& H4 Y+ V2 \, p3 L1> 初始赋值时:CA b = a;
9 I; ]! {/ k; t2 P! b( e0 P2> 按值传参时:void myfun(CA ca);
9 O! u, w9 R$ ?8 ]) ^
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-8 22:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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