鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑   R; @0 k  o3 `
& a) ?* K% u" h1 f# ^6 b: ?
class CA
! H. W' U* k$ O& y# X1 }{/ g6 K: y7 Z: Q9 J& \7 N" X' y" m
public:
. {8 }$ y) `; E        CA();
3 C' ]) }8 a& F4 g  v, \) o0 o        CA(CA&);
9 d' `2 h& z% M. x9 G; }+ ~( X        CA(int ,int );
# J; P: d0 m" f6 T% [        ~CA();; s1 h7 K: ]# _. h
        void print();
0 H1 }" a" G, ]. \2 R+ o1 A5 h
6 W  Z* k8 `1 O+ j! e- }6 C, aprivate:  h. B  Z, R7 u5 M2 h! R5 o( p0 ]
        int i;
9 V  U  A5 S# p& e        int j;
  i$ ]5 L& D8 E/ r};+ c  `6 \+ R" U' ?% F# B

( l7 o* m( n' J! _1 H+ w2 D% DCA::CA()
- c1 @- g  r' i7 E  L& y" p{
- ?3 X" \7 g6 R: V2 u, i}" M$ t8 ]: N7 _) e/ q
" l" t/ `+ N" B: H* c
CA::CA(CA&one)
3 ~# M) V: h( N  x8 w! ], r5 J{( p; p9 F3 `* `8 a) x! f
        cout<<"调用复制构造函数"<<endl;
$ |: k+ p; H; x; N4 K; o7 z+ V: O        this->i=one.i;
/ A# B: s8 Q* m9 S; y7 A" n! |0 M        this->j=one.j;
1 s; J; y7 J* N% h. F5 @}! Y% i; r" d  F7 w( y3 j

5 X; j3 U( H- {; r5 p0 }: xCA::CA(int m,int n)/ v4 ^. }, b5 u* K! a* Q
{
  q1 O! x  x$ Z7 H# b        i=m;
1 F" `6 @  L- c$ J# ?7 M" Q9 \' `        j=n;
, I/ @# G. f# f$ U" F1 D3 N}7 u0 S! z) Y2 e2 c  k
' g; k- [1 M$ ~& r
void CA::print()$ V( }! U& z" i4 a- e( i
{& \/ l- ~4 B% z
        cout<<i<<endl<<j<<endl;
- p9 x: [7 g! A}
" B$ P7 J7 o+ B8 K* P$ E  z6 Y6 Z# M3 ]
CA::~CA()% r- C2 N) k$ Y' y
{. K# j% n& F+ e1 `( d! p6 n
}6 H5 K# ~$ e( K  R0 ]/ l/ I5 j
9 P1 U3 i: T2 }, d0 v
#include <iostream>4 q+ z* ?  w# f+ |6 ~2 G
using namespace std;
; z# g% w3 u* d2 R#include "复制构造函数工作原理.h"  K( X8 H* u. G& j) q
int main(void){        
' r- y/ c2 r" Z8 J: I: [CA a(2,3);        # m( ?7 Q/ u" A
a.print();       % O) n8 }2 f& A* C
CA b(a);        : S2 ^/ ^' I( k8 z5 t" I& K5 g
b.print();1 p, L$ [, b6 V. y
      
" G) i( U/ j2 \( J  I return 0;6 f( j6 Q$ r/ p$ z3 }
}
) q- M+ Y5 ~) b/ |: N3 d- I: U6 R3 u+ K
: i1 u. {2 ^9 l7 x' f, U" r5 O( V

, A( H' S+ K; a( [+ U7 S0 o. R' P, g  u1 l! K! ~1 P
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:- ^1 s* f( Y, c/ q
1> 初始赋值时:CA b = a;
* f  d; a3 X! x) J" O, y2> 按值传参时:void myfun(CA ca);
4 _. P" o& }) v) a5 u+ J3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
0 z4 r( U! k0 E+ [复制构造函数在以下几种情况下调用:
+ C3 m" A' Q1 A1> 初始赋值时:CA b = a;( _$ F1 m7 h* D" }. m. O7 G/ p4 l& j
2> 按值传参时:void myfun(CA ca);

2 l- G* [1 Q: A5 S* q4 j第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-22 14:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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