鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
9 V4 m/ `+ E, f$ ?# W- v- k
: ?( M  {) T6 bclass CA
' v8 {( d7 y: s. n' l" _9 V. P{$ H1 w( ]! f7 `. o$ t9 M: P7 O
public:8 W) b; A% K, s- [; G
        CA();8 E+ W1 O2 H9 n5 t( X
        CA(CA&);5 K  a9 K: \) s
        CA(int ,int );6 V* [+ ?% M0 }, g& }+ Q" o
        ~CA();
5 s; ?3 e: \: l2 ~1 Y6 o: @; u        void print();1 D1 S" W* k5 U0 k2 Z' F

8 x0 {1 B! Q- Z& j$ kprivate:
9 F- b+ Q- `, n- ^( Q        int i;
6 ~9 ~9 {, R- w1 p( {) O        int j;
7 {' `" R; Y; u5 U7 k};0 ]  c; y; Z# h+ ~

- H- x0 p9 M! D1 bCA::CA()% t& h4 k0 A1 b
{
" z" ~. ^- q2 D# f% R& @# ^}
$ i0 r; n1 f' i5 J( F1 c( g
- [% q/ V8 r: r% X, {CA::CA(CA&one): @8 r' y& M/ a: p5 ]+ ^% W
{
9 M# T# }4 `; g+ _        cout<<"调用复制构造函数"<<endl;, t# c: G' w9 T9 A$ j
        this->i=one.i;! A8 a$ w; \& u6 X: p* K! K3 R7 n
        this->j=one.j;1 T! a3 V1 P2 L3 L" {) Y( ^$ S
}! U* u+ [+ s, x; {/ ]- w4 D

$ Z( v+ ?# P: h7 y: ICA::CA(int m,int n)7 U4 E4 j6 @/ C
{- a# }9 C2 u! r/ u. O" |" C6 a
        i=m;
: t3 f' }5 x! C' c' m  A7 C        j=n;0 F; D" N0 z( R: G% R( F
}: g+ _( \. ~% v3 w

( E+ W& _" l" `6 b- p+ ~void CA::print()
' c8 b: P) \. J# I$ E. R{8 s. `3 |/ A0 B, F& d1 A: `  m. b
        cout<<i<<endl<<j<<endl;
( T5 i: e+ @( J}
7 f) G1 E8 Y! H# p, N, B2 h* T8 m6 ?/ ^1 P1 Y: N+ f
CA::~CA()
( L, e% A" J5 K: }9 v& ?; Q{
9 j# r" G0 |5 ~5 j- ]0 M( Y0 m7 N}2 E2 F- z- V. K3 J7 U2 @

) @7 X" V4 a8 }$ m#include <iostream>! ]/ i; D' R! }, C# [' m
using namespace std;3 r9 G5 Q) _& O4 f% s
#include "复制构造函数工作原理.h"
4 b" D" {6 b  uint main(void){        
2 o7 g/ a* ~7 V' jCA a(2,3);        5 w. y+ y. e1 x! B. I" M& f+ d6 }
a.print();       # M  h0 t( r1 |, A# |
CA b(a);        
0 s  s( w6 @$ y4 o/ A) u% Tb.print();. f% ^7 Y0 |" W( o& s3 ~  Z" @0 V
       & ?- H9 |* F, P7 Z9 T
return 0;
' B. R- W# E$ _6 @2 k$ E1 {8 _}1 `9 {# D5 h9 `. o( M3 m5 z# k9 |
7 w7 u/ f; L: ?3 U/ U1 Y# _  ]7 y" q5 A

8 `: W+ l8 R& \/ G4 V4 a5 d. r! Q9 N1 ?7 k8 X
/ `& n$ O* j0 z9 M, Y4 J
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:2 d5 y- @% |. r/ P' X
1> 初始赋值时:CA b = a;
3 l, S1 }' j4 o4 Z; e% b2> 按值传参时:void myfun(CA ca);
! f# O/ \/ Y( }( z0 v. i+ R1 P3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 & `( \1 R! ]. h2 U/ M
复制构造函数在以下几种情况下调用:- P8 Y2 \# Z1 |, ?+ l9 u' v( q
1> 初始赋值时:CA b = a;
9 i& G1 ]0 s) o9 k. L4 g) a2> 按值传参时:void myfun(CA ca);
! s  L" z7 j, M3 I
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-25 00:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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