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

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

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

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

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

×
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 * o  \; r2 F  ?' J7 r9 w
9 P6 w* d; Y6 L. o
class CA
, J: M9 e. g# ]4 p( X( x4 i  f{/ U4 H% U0 `4 J' ^2 d
public:
+ u- _, z% b: N7 V        CA();
" h/ O9 [3 v. ?- ~" F6 ]+ q7 m        CA(CA&);  Z: s% V) {% B9 ~7 V) D& I
        CA(int ,int );
; ^( M% H  I" M; D( v6 }% b        ~CA();
! d8 J# q! L( n7 Y% z        void print();
' u$ k& D! @; z# ?! |# I& o0 ~' e5 [
2 Z8 l( R  v& w$ ^: Zprivate:
  k+ Q" ?3 z- v3 g' b4 z* _        int i;
# k' L1 H) A- N0 R4 K3 E% J. P        int j;
+ X! }2 ]' N5 B1 ]7 |; ?};# e9 U7 i9 b) ]2 A6 [; o. u

3 w. i9 i- m6 l' A/ J: J$ {% jCA::CA(); e' y+ J, }" m& x4 I! [
{' y9 j9 b/ S/ l) E& Y  K2 T
}# g; w* L2 {" L" C0 v

# g1 C# u3 ]8 c8 X3 M$ ~CA::CA(CA&one)
1 r8 H/ t& {$ ?& ~{
2 w+ j; a0 P& P! f/ d        cout<<"调用复制构造函数"<<endl;6 s; Q3 H1 ?6 i7 J
        this->i=one.i;
- I# _* y5 x3 H' |        this->j=one.j;
0 Z# R7 c+ q5 g6 M& t  i}- ]# G& x) ~3 a& F

% q  S0 c9 ?) m4 J7 ECA::CA(int m,int n)
4 R% A9 k! \# h- h{
" c! b6 V" S8 q$ L        i=m;
& N1 T, j$ x" f$ u        j=n;8 m" j$ @1 i8 ~# q5 `1 l5 p( l
}3 S9 y- ?$ H* t& k

3 |' d, R5 ]0 j& T& `void CA::print()$ T; y0 J0 M; j* Y/ `8 X
{9 }- E+ Q1 y' X& [$ Y$ p, V7 v
        cout<<i<<endl<<j<<endl;+ [' ?2 A3 _! r
}. l$ b) L" Q- Y4 P) o1 s1 y7 a/ b' K
# e) z, e  z2 p) I9 _0 I
CA::~CA()
5 n4 R- G" ~% C, R0 H, t& B: P{1 ?6 D/ s1 k3 B+ Q
}
3 W9 C# G' u7 [2 A" h, r  _( |1 w- @
6 }) u( T$ i9 ?2 ~' }#include <iostream>
/ d1 u/ y2 X8 _( r, Y( o4 z1 ~1 B4 Qusing namespace std;" u$ L0 t( p* g; |7 g
#include "复制构造函数工作原理.h"
6 C" T0 ~- v6 w$ g7 dint main(void){        
" N! x0 t3 Z/ }  xCA a(2,3);        . Q5 m! o  e7 X8 E5 a; _
a.print();      
8 X) q1 }0 n! Y CA b(a);        : u& G; G) {/ {- z3 |4 k' G
b.print();
" H3 M$ q( |; O. f      
  k' F- ~1 A3 M2 L return 0;
5 K  n* E0 }# G- E0 ^! q) E$ ]/ ^5 S' F5 w}
* S9 R9 n# x! m: e9 Z- X
9 L+ H3 w% p: o4 e: {; l+ [  M7 F8 i5 \9 u) n( n/ ?9 p) T- \5 H8 f3 i
3 a# G/ e5 m. V% K6 S9 i) H3 ~! D
5 |1 U  F+ _5 a' A0 W
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
. e, l1 U: U4 Q7 }& Q* Z$ [& f1> 初始赋值时:CA b = a;1 l1 Z" o+ F9 b# E  u
2> 按值传参时:void myfun(CA ca);
% P5 n. x, D$ U# X' o* g$ Z3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
回复 顶 踩

使用道具 举报

 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 8 x. I4 q" |/ a! k7 p: r7 k
复制构造函数在以下几种情况下调用:8 J9 _; m, E+ e& T  A
1> 初始赋值时:CA b = a;! `/ Z# i# a+ |; V: w; y
2> 按值传参时:void myfun(CA ca);
" w/ D2 D: ?# b$ P+ j/ u* v4 y8 {) {
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com
回复 顶 踩

使用道具 举报

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

GMT+8, 2026-11-12 13:40

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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