鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 % m7 C* V4 D- B6 \# T0 K

6 O7 e2 E+ m! n- k0 pclass CA
8 i( Q9 C' L! U; z) m& r{
5 \1 T! P7 D+ \! d4 i4 Upublic:
5 H# P0 n* v3 W# W" Q& b        CA();; k1 V8 t" O! R1 _
        CA(CA&);! T. j( b4 @6 d* W) m- G0 L, Y4 ^
        CA(int ,int );% u& ^- ?6 s# r- K
        ~CA();& P& X3 V3 P' ]" M' t
        void print();  r$ F/ {9 Z" O7 m# T! R/ i( p* b5 x

1 c2 M8 q3 V5 X: a& U2 @6 `6 Mprivate:
: E" u3 k4 U/ c) Q" N        int i;
3 g1 J0 ]) J+ ~6 c' C9 s6 G        int j;3 \+ w- f& E" U: r: T3 v
};8 o) I! h% d- j

7 @& g0 |6 Z* F" eCA::CA()9 Z0 K. W1 d9 ~: [' A% ~
{
) t$ E' |$ u! @5 g& |}
- v4 u! S$ u4 |" K$ v6 R0 H# o/ q1 \" Q3 X
CA::CA(CA&one)
! n7 t& d6 o; w* a, I4 D{/ Z. \" A4 Q- q; e9 j6 H8 X) L" W
        cout<<"调用复制构造函数"<<endl;
) v% J& T0 v& f+ G0 F7 |        this->i=one.i;
0 v6 H" k# A8 F, l& p/ a        this->j=one.j;
; ?3 p/ w8 E7 U+ @}3 i( x& i. u" G; i) g! N: C/ \( g

: X$ ?0 J3 A+ F& D$ f7 ^CA::CA(int m,int n)
$ B! I4 P# A6 N! f8 t% s& \{
+ |  p- C+ H; _+ B2 O9 @' ^! x2 |        i=m;( b3 V* q' l5 r3 \
        j=n;/ E5 J! X8 B9 V" }
}3 J% f3 b: Q. T6 r

6 {/ B' E7 c1 zvoid CA::print()
: L! `) G! H5 d+ U* F( ?) n/ p{8 }  N# D8 y" g
        cout<<i<<endl<<j<<endl;
; ~; S9 `0 K' i' l$ j5 T5 r2 V}$ s4 k0 k2 b% k) V2 y  c9 Q

# M7 Q0 i  b1 e% F9 ]CA::~CA()
7 g9 v5 v4 L- N7 h- g{4 _; {. z' V: _& c6 J
}1 Q% H1 e4 N: Z* K/ ?

. k2 D1 E/ G0 h  j#include <iostream>
+ u8 S! \! ~0 A$ Z: [" c" k1 \& wusing namespace std;
; ~) E  Y" R5 H( A#include "复制构造函数工作原理.h"+ w9 _# z0 K5 X# Q3 H+ p
int main(void){        / f. e% L" m0 S- [% a# S5 N% T$ M2 _
CA a(2,3);        
% y% |( ?  [, F# F7 `; Va.print();       * c+ t, u! t2 J# Y3 |
CA b(a);        7 U1 L! d3 h! @* D: k
b.print();
& z+ y, s' h: {6 ~3 w- c      
# T8 @% [! Q* b0 W" A3 s3 R- \+ s) | return 0;
  U, o  |9 I6 D! l3 V}
) O& W7 k' J1 {
0 d+ G: N5 d( [: ~& C
9 `. O4 {8 n8 i& R- d% d
! K! W6 ?2 x: J. B# [' w
1 n8 J/ `1 a! N! m" x3 x
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:" I6 ~. Y- \% s
1> 初始赋值时:CA b = a;
3 F1 ^+ \: ?8 y; ~) X1 G2> 按值传参时:void myfun(CA ca);
/ f1 i: x; `. p. E& \) T3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
- M4 V2 n, g2 E2 q复制构造函数在以下几种情况下调用:6 s2 c7 g4 b: a: H
1> 初始赋值时:CA b = a;4 N) A; o$ Y+ H3 l) {0 ]! Z
2> 按值传参时:void myfun(CA ca);

# `/ E/ w5 T; w0 O7 w& k第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-1 06:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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