鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
5 S* ]6 q, q  D5 Q3 N5 k7 X8 I5 S* @  G6 |! p0 q& ]0 T8 h
class CA
" ~. U- a  z! g{
2 v+ r) \6 ~! mpublic:
4 e, K1 W3 f$ U! m        CA();
- {" Q9 T6 ?/ s" A' t        CA(CA&);- J; t$ K) M8 G/ A! U# w
        CA(int ,int );
+ j( R' J2 n5 M: ~, s. ?- x        ~CA();
# x% m1 Z" E! Q5 N* S        void print();* F' W( p' m  K5 B, k4 {
$ C5 d% D! Y; B( n2 ~2 d4 ^$ N+ d
private:+ {' x4 h6 l0 j' j7 Q" g- m: ~
        int i;9 A* l, O! a0 m1 X) s% t
        int j;
' b  b3 A% G1 \) k& S};
4 z1 J/ b! t" L$ f5 K/ M
, a$ [: R$ \" j; x3 s8 J4 x8 {CA::CA(). M- Z$ m: P. ~
{
0 m% m7 t, C: t6 |3 D  |}
; U5 w) R( H; o7 G# _- o
9 [* t. I6 @) |' C2 gCA::CA(CA&one)
' L% O$ }1 P% w8 W0 D{
* t  ^/ n" v1 ]% m        cout<<"调用复制构造函数"<<endl;4 c- J2 I% b8 r9 |  b+ O, t
        this->i=one.i;
8 V1 ~" O+ x  W! o) A9 h+ \        this->j=one.j;, y" r% d1 p. P1 E) R
}1 B( K, f. e' w6 i& H& o) l

. A+ h% L; L  g3 hCA::CA(int m,int n)- ?! X; E+ V3 x$ J2 u6 F
{
" a7 _! Y( i) o# E! [9 T        i=m;
8 G9 l" V7 s0 b9 h$ R        j=n;
  j( c' Z4 D3 |1 Y7 u0 o}
+ F1 T5 @0 C: x( f6 H
! R5 c: Q( v1 q0 l" l( |void CA::print()4 W5 l3 b% W% J5 I0 l) m/ M
{+ p5 n2 q! `* a; i+ d
        cout<<i<<endl<<j<<endl;0 I. v% Z+ ?/ `2 ]  X3 w) b2 d" e
}! _2 S7 _) ~& T( [! H8 R' z8 p
& F+ X2 J3 `6 y+ d5 y  }, ?7 U  B2 |
CA::~CA()
  f+ v$ Z. f+ _* u7 K{
0 X+ V) A1 H# r, K6 U1 ^/ Y0 s}
) H3 {; T0 `0 ^8 H; f! O
' C. t3 t1 R3 S* E#include <iostream>
6 Y7 s+ N( M: ?$ {2 K7 N  P$ l  i  U7 ousing namespace std;3 @$ j1 f  |4 L, d" z. R6 Y
#include "复制构造函数工作原理.h"* B& Z; n, M2 v* e2 d" A" E& X
int main(void){        * \$ i* v2 d8 f) k# u; z% b
CA a(2,3);        0 U' y4 f: H5 s
a.print();       9 x1 v" r8 t; j# O
CA b(a);        
: @# Y9 w& S3 Y7 w3 }* X  @  rb.print();
0 w& R# |" t0 i  T  X      
7 `  J  `  p6 r% l/ B4 a3 U return 0;4 c) S" M$ ?2 {$ L$ Z/ l- J# E) |
}
) [$ G( d/ n- F' S  C; I
2 X$ J- ~, v$ o( s+ t
; s. v' K3 Y* V4 @1 r/ k) ]( n$ f9 c$ U

. Q/ S; R4 y% ^
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
: `# l9 h) c- `$ r5 g0 ?: t1> 初始赋值时:CA b = a;
7 x! {' {  t0 v' g+ g! y2 w3 v2> 按值传参时:void myfun(CA ca);; e" ]1 q/ e: `4 N8 Q5 g6 |- U
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 * Y0 N4 S5 A' Z) R4 ~  m: k' D" Q
复制构造函数在以下几种情况下调用:
& o9 X5 s; |/ s5 k1> 初始赋值时:CA b = a;5 x- j' c& m& V
2> 按值传参时:void myfun(CA ca);
9 x* _. n& g0 g' T
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-29 08:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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