鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
; G( N* f; T% s& s" [8 K0 s
: G1 e/ d' I) J4 |class CA- X- A! k, u; ?7 J/ O
{3 J: }" E" }4 N# s
public:4 ~, W; H) m9 d! m0 n. Z4 w
        CA();
0 s. J* T9 z+ T- g- B6 L0 T        CA(CA&);
- |) d; [% n. W- [7 b        CA(int ,int );
3 P" q- g' S7 c/ w* z        ~CA();7 x% E$ Q+ H6 E) A7 S
        void print();' e. z" L) C* B" `
# Y0 f5 K1 K! R! _3 H# r+ B
private:
) L2 Y# F) s4 |) L2 G! z2 d        int i;
9 u; c/ c9 t( l, H7 Z        int j;
  |' h5 W( n- V  c8 m" V" w$ V3 e};, j* q6 a; g2 Q' @+ y' ]1 R9 Q* i$ Q

7 _% O0 D- @# A1 s! Z7 f7 ACA::CA()
. N' }, }7 h" P9 d{% h9 _* V# w2 e2 i& n
}
2 U) Q; m  H6 q% D6 y- }; ?9 o, h/ o2 }) b" s, m( F! p
CA::CA(CA&one)% S0 R( D6 Y3 w5 d+ Y
{
& k: p$ i, p9 m! G$ \) l/ w6 x        cout<<"调用复制构造函数"<<endl;
1 ~3 J9 b) C" \! K! L$ u        this->i=one.i;
' Q5 G0 F( Q. [        this->j=one.j;
2 n" O5 N4 ]( }' j# X}
$ t. I) W+ d  G8 n+ t1 J6 L6 F7 W1 `$ T' W6 g$ l
CA::CA(int m,int n)- \5 N0 b, e* V
{
) I. L+ @% R5 K' L, i% K, _        i=m;
# d* D  V- U$ Z; }7 T. Z        j=n;
0 r, _+ i6 h2 `}
7 _( p! J& \8 Y+ [5 }+ Y3 T) M2 _% q" ]1 h, B
void CA::print()* L! U$ z" }& q3 L2 R, [* @% h
{
- s8 R8 P) p# Q( C# E* y        cout<<i<<endl<<j<<endl;: I* o+ R3 `& W! `
}  Z" h; K+ \$ X* h! H

% v/ o8 ]! e4 H' Q0 h6 eCA::~CA()* D+ C+ W0 ^& P1 W, R  x  Y
{+ t- Q3 o( L0 J
}' a0 v  {6 l! f. a; M  w6 K

: {( E& o* W' A' Q5 |: M#include <iostream>
& ]3 T$ x4 j! f! c6 A+ q, eusing namespace std;1 P0 J" r2 Y2 O1 _- A/ ~5 p
#include "复制构造函数工作原理.h"
- \2 V, z" e" n* U- A; w  Vint main(void){        
) H* L; W% @& d' p: _CA a(2,3);        
3 Y3 U: U7 z: U& X6 X, }6 l% ?- m! wa.print();      
  q0 M, L; `2 J+ J CA b(a);        + R5 S4 g  N5 l1 q
b.print();
5 b2 M% K! ]% ]       7 N: N0 u- V5 G2 A5 P( b- ?. X5 I
return 0;
# b8 I7 ?/ @' e$ q* q}, R4 _6 s) L8 u7 h8 }0 a" X. h

5 x. m5 p: ~2 {- i. u9 A9 T) I* [
: d2 Z& B5 R- y9 E/ K* E; p1 v2 `0 Y
2 }7 a) S+ J8 n' P
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:7 e1 L% C# Y' L4 Y+ a& c
1> 初始赋值时:CA b = a;
# r+ J5 ]) o, U4 s! J2> 按值传参时:void myfun(CA ca);! B0 E! C( u0 m  f6 W
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
7 L( z1 f. f. w  {8 h8 L: k复制构造函数在以下几种情况下调用:, Y  _! D2 i% B" E9 R5 e
1> 初始赋值时:CA b = a;
9 [$ U; i8 R" T( y2 H( `1 W2> 按值传参时:void myfun(CA ca);

, O! `  I! \3 o' G第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-1 17:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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