鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
9 H) V/ _$ v" y( q" C. J/ p0 A/ w: V% R
class CA8 l  c! s% b; v) E1 L/ P
{
1 F2 t# B) k7 N2 zpublic:
' b' e+ w7 U1 @9 h) R6 l        CA();' O4 `$ F7 {! A$ V+ j+ Q
        CA(CA&);
9 j. k% \8 T1 S( x  H1 |1 Z6 b! e        CA(int ,int );
. B/ K3 v' u4 J3 u: z& K        ~CA();
7 F' U2 h- M7 f+ F5 M9 T2 y6 M        void print();
' K$ t. j" d4 K% p( W8 j
0 R1 F9 R( a+ c0 S( l% G+ ~5 bprivate:8 @+ O% B- V2 x
        int i;
6 ~+ V" {4 ]5 e1 b7 `        int j;
+ v. L# F3 [: f% C3 ^7 Q: g};
8 N  _4 G% t2 a6 z0 P+ n; h  a0 D& ~) F6 B- ]) B  }( U% j7 t. p: u
CA::CA()0 O  t+ Z% i* ~: {2 j2 ?
{% k! w+ h7 G; h- E5 X) q0 N
}1 ~4 X# R: t3 I, [

% Y! i1 r+ S5 m) ~6 |9 K, WCA::CA(CA&one)
4 M8 L! \2 i; c! a! l- v5 r: B{
6 n1 X6 Z- g$ z; q2 E; ^        cout<<"调用复制构造函数"<<endl;
. F( ~  y7 f& C7 D; |. i6 k; @3 E        this->i=one.i;
/ U1 u) i9 \" Z: l1 f        this->j=one.j;
. e7 m7 C* @: A' Q  Q2 L, B4 y}( z7 d- z7 z; u$ p2 ]
7 x  X6 S0 M: w* w
CA::CA(int m,int n)
6 p( F* S: _/ w# I) V: I# c{
$ e% M6 s! T9 H) W: P1 W- u$ i& n        i=m;
) @. `3 N% t( `% L0 A, N        j=n;
9 T' _+ f5 p2 d. {( h/ {}- ^7 D3 d; B: g* Z) x. k, E1 l7 d, V
, i0 n" |; h) N7 k" N4 U( ^
void CA::print()
+ E* ?9 c1 h( Q  W) q( K{
5 A, A  q& ]7 T8 C( K: o        cout<<i<<endl<<j<<endl;& x' A" u# M# K
}
; D- \: w- U- S, n: C7 C. X% ^
# ^; p! R+ y2 j& m0 |( PCA::~CA()/ {8 k+ ]/ R1 l2 c
{$ O5 p) N" o; n; D
}
- z9 l) Y+ l7 _* P4 j. Z  i/ M7 l' x6 b& b  ]( q
#include <iostream>
& i1 J3 B5 \3 jusing namespace std;
" J+ u1 A) ^3 [  G- x& [$ B#include "复制构造函数工作原理.h"
' ~- r+ u1 D( v; r" j7 [6 Sint main(void){        $ `; D3 `% T( f! U1 `! E: _
CA a(2,3);        
4 A# Q5 N) b( Q! Sa.print();       8 `! u4 d" b( u2 D; |2 T% ~
CA b(a);        
+ ]6 m) S# {! q* e# [b.print();5 j# k% X" H  H7 X" Y4 X, j
       5 I/ g& E+ L! i  E& E
return 0;5 ?: f- ]* A0 m0 G0 K
}" s& W( X, z9 t* C& q6 Q4 w* |% h. s

# ?" K1 D" r; `" b) z! X
2 g3 Y* b/ i7 [/ I
7 Q" Q9 r/ U. r3 m% Z) D
' g8 M  m) x- P9 H
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
% g8 X. _2 \7 `9 V8 W1> 初始赋值时:CA b = a;
8 `# \2 I8 S7 S# e5 X1 j' k% r3 m2> 按值传参时:void myfun(CA ca);
2 q/ w( x  [# C! K3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
9 N/ o3 G! v$ c4 d复制构造函数在以下几种情况下调用:
: J5 f+ B1 t( G8 n9 h: M( {1> 初始赋值时:CA b = a;
+ z3 A  q% {3 [  W9 n2> 按值传参时:void myfun(CA ca);
# z: W# V$ [9 z# r
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-1 14:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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