鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ' p+ {% k' E( A2 T; Q1 @# N

) q( F$ e4 ?# e, O5 Vclass CA
3 [" u5 F$ [# f5 p8 O% U{9 X( u2 z/ p4 \8 ?7 S1 Z
public:* X( |) }; G/ j0 b! f  ?; Z) R
        CA();. ]* U& K8 ], C
        CA(CA&);( X) Y  U) U& x0 O. N
        CA(int ,int );2 x+ K) r4 s8 Q) {# v
        ~CA();' F/ C2 ?8 |4 W* Y
        void print();% q* v# U; W3 {* \* x5 k

5 x) U5 f& y& F: l7 z1 _' `2 uprivate:
) \7 m# p* _; t6 V        int i;
! j9 y  r1 @* \, w3 r        int j;3 R" N% q% h) B, S# J5 B
};! W% `& W! K6 z( K

; ]; l8 s, Z8 C$ i5 h! i" @* `CA::CA()
) W4 q4 g5 T) F- l0 V1 v% S& N{
7 u1 ~8 D. w' j& s* w}
. f8 Q9 w% K$ E6 R) d5 V
* X- v8 r" b, F+ {# PCA::CA(CA&one)
. D( @, h4 t6 S) r, H{
7 l! M! A) k# |: ?1 Q8 R        cout<<"调用复制构造函数"<<endl;
# o- m, ?+ o0 I2 n6 i# P        this->i=one.i;
0 j- A2 }, |) S        this->j=one.j;
7 U' S4 N4 S: e, U}
- r" v( ~6 k" o  |& r& Y6 s+ N3 Z' e& m" ]1 y9 b; Y9 K
CA::CA(int m,int n)
. a0 f3 U/ b: k& s{6 M! x+ e2 B- e: i1 n8 X% q& B
        i=m;% g# c1 S. o1 u& N5 t, \
        j=n;
2 J3 T. T* W$ u2 z3 e}
# R+ I& c) w" ^" Z6 C' T
, r7 Y. L6 f( X- Bvoid CA::print()
, X/ N  t! n- n0 }" f+ u) f{/ l& j% H6 c( @) }
        cout<<i<<endl<<j<<endl;2 {0 U) w" F4 ]
}
% o  o. N: I, M
, q9 Q$ J% U' X+ nCA::~CA()
3 C8 Z, ?% a' W8 T6 L{+ a& X8 L8 e( T7 K0 f( E1 s# @
}
) i9 ^) f2 z( a; z
2 z, V( p) u- H* w#include <iostream>
5 w4 K/ Y2 J1 y% \! Dusing namespace std;
4 u+ U3 ?6 e* x1 f; @#include "复制构造函数工作原理.h"3 h2 _9 o2 M3 |6 g
int main(void){          }" d4 [( r9 S
CA a(2,3);        
/ r0 ~! ^. O8 h: K; _8 H+ V- ba.print();      
& G( K8 a5 K& q CA b(a);        % u  {  N# M+ O* O, ~
b.print();
# `: K% n# {$ N' S9 p7 l! y% Y      
" w" K% T; U' o* {6 u8 o; @ return 0;
: X0 \" F  N! M0 l}* n9 `5 I' B  x* T4 y4 I9 t

# _5 m  e/ F8 }! {( I" X, R* U$ M$ _: D- H; q. e' R
. l( v7 [+ I( I

/ W9 o/ @3 ]  k, x
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
: ~; ]9 e, Q( N. c9 @( a1> 初始赋值时:CA b = a;3 J) V& D5 C: y4 F% C
2> 按值传参时:void myfun(CA ca);
* C, P% U& E* M7 M. X3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
: F$ f8 D9 g+ q) P0 h复制构造函数在以下几种情况下调用:1 n  l/ M& E% K4 _5 E* s( d% B
1> 初始赋值时:CA b = a;
1 J$ V* F! h+ Q  n1 Z4 x! N2> 按值传参时:void myfun(CA ca);
* n8 N& F- J0 e5 Y9 V
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-9 02:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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