鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 " }2 J; S0 n. \$ \% x* ?& v
+ o6 t( C& B) S4 v. s. }" s2 @
class CA
1 f+ x) q+ B+ b{( x3 o* {+ a( v- s) ]2 O2 G
public:! \) t1 j6 U7 w. t3 U- E
        CA();
$ x/ _' s, U) x5 `        CA(CA&);; r# O6 |# T: S0 Q9 Y& {( @* G
        CA(int ,int );, B7 [; Z3 P4 s  O9 [* E
        ~CA();
" R1 Q$ x( O# n0 K. s6 R        void print();
1 Z1 p: M4 F. t7 H9 ?- Y/ ^/ y
( I  s+ l) _9 l3 iprivate:. b3 T3 @/ H. k6 R
        int i;8 F6 r9 q9 s5 d# S' P! ]
        int j;
' `" B. X" l! O1 C};3 A" a1 l, ]" c8 `
9 G5 k( T5 b# e
CA::CA()* o; f& G1 ~4 R2 x$ k
{
1 t8 p/ u& Y0 o7 q}
/ R: M( O( @7 K4 ]: }3 p, G" P) t$ t; G/ v+ |5 @
CA::CA(CA&one)& f5 i9 N1 @0 R! k
{/ K" [$ z( u! F, v" _9 X
        cout<<"调用复制构造函数"<<endl;
) \: h5 M% c: n! D- Z4 u+ \/ f        this->i=one.i;4 _: A  x  b2 i8 Q  u  C" m4 j* Q
        this->j=one.j;
1 A7 H1 H7 }: J0 ]}
% r4 o9 ^. f0 i% {. t9 n
1 _3 H: v1 q. L0 ?, \. ^0 R/ NCA::CA(int m,int n)* R9 l& D. @/ Q3 y- F
{2 n+ b; q1 A, ?% ~: Q7 k
        i=m;
  f2 f" K3 I5 J! s& T  m/ @2 B        j=n;
4 e3 `( l0 r. J5 r& I! }}, C- y) X% v1 h

' |9 V/ F% {, N, avoid CA::print()
/ c0 q- W' V+ ^* ^{
' {" I4 Q  b9 w! W" n: d  H1 [        cout<<i<<endl<<j<<endl;5 E1 o; G- N# W  x/ d* w
}/ f; W, F7 |5 g2 r" o

$ K) ~3 R$ E% E: w' p& QCA::~CA()
2 P* W9 B2 S7 i* k. X/ ?% K2 e{6 F" p" e# Z% N$ Y2 M" Y0 i. @$ L
}
) N5 |. m( o: T' J- b! q; M# h" x
. M4 `4 A- o$ N+ w7 ?/ M#include <iostream># Z: W: F( G: L$ c
using namespace std;
. y3 R# o( N3 d9 P$ R. c5 e. c#include "复制构造函数工作原理.h"8 @+ q5 V: ^. v# `% u9 O9 d
int main(void){        
1 T# ]( `+ F7 f4 Q  p/ xCA a(2,3);        
% k: b- J6 L4 X( ]8 na.print();      
' n/ s5 i3 w$ I% W CA b(a);        
5 i2 q! d1 Q' i/ B/ Hb.print();3 ^( `: e: v) I
      
3 u4 s. }% `2 p% s return 0;) ^+ [  \4 I# |$ C4 D
}
/ P9 C3 _6 O: N( v7 s, `
3 F' F( ]) l- U# @
# Q+ ^  |; l# ~6 n  B$ Q* m% v6 X  P7 w) l1 H8 t. W; y
4 |) X/ `* _- `5 ?5 `
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
( i4 n8 X/ X! f* d7 N1> 初始赋值时:CA b = a;1 d) ^' }. }% y* K% _
2> 按值传参时:void myfun(CA ca);
' e' G; Y% T5 G3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
; e9 K5 [1 t/ L' t! A: a6 u复制构造函数在以下几种情况下调用:" D* m* {7 ~4 Y& R. j
1> 初始赋值时:CA b = a;
6 ^4 H7 m( F; X4 ~0 \! e5 I+ v2> 按值传参时:void myfun(CA ca);
3 S( ?; }2 m( [/ @
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-23 15:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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