鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
  n. B! @6 P+ y; t' r1 u" [- C0 |( o8 E! A. T- l
class CA: H# [) L: r; B6 m/ [
{
  m0 m( c% h- `, x* b5 }  b9 Rpublic:  i8 W0 }" g2 ?3 x, w: u# K
        CA();* `% ~* C  d+ X; `& A' q; I2 I7 W( N
        CA(CA&);: j8 o2 V* U, Y4 {" w% V+ s
        CA(int ,int );- t* X! Z% N* d
        ~CA();
* B3 r' A+ W9 r- V& U7 o# H        void print();6 c% |3 p2 ^: b, `; R

% B; \: t7 L8 F( x# n5 Y" Aprivate:: I  N4 S0 {5 X# b# A
        int i;
9 Y* u4 D" _. l7 l% {  y0 m        int j;& C$ c$ d- E% ?+ b0 Q8 B0 j6 r2 c: |
};6 i( r5 v  M& a2 m

& z+ H8 n& g- k, y! p) q5 \4 ECA::CA()
! [+ ?- T1 p& c{% J: k( L! |# T. j
}+ Z. K  o3 w  P# z, ]  ~* [6 f1 f

6 r9 ]. j0 T7 D: e% S# r0 l3 ^# TCA::CA(CA&one): U' g: f8 ^+ t! |" X
{0 O( L; H- x! E* M% Q
        cout<<"调用复制构造函数"<<endl;( d  r8 i2 G. u# n: @. @( C$ {
        this->i=one.i;
7 W. m/ J4 ]1 q1 c        this->j=one.j;
" D" K6 Y5 F% O. O) V/ G}
; p* {& b/ m2 t9 N) v" g; D* G- p* w0 K7 o1 W
CA::CA(int m,int n)
; m0 ~" z/ E0 a) v( D; r, f5 B{
$ o, |0 H* [& c5 a. ~  D        i=m;4 ~8 B- v; a7 {  L9 \6 S( N
        j=n;* `+ }3 Z/ I% \4 x$ {6 H: o
}$ u  {! t8 P+ E6 S$ l) R

6 y7 X& F/ O4 ?. r: zvoid CA::print()5 ]& t0 |* v% M0 k
{
6 [  x4 c3 O. ?( a- \# @4 }8 E        cout<<i<<endl<<j<<endl;
! I* \3 f2 [& p- K! k}
( U' g: i" F. b: m+ h
0 q" e6 F& t' h, x! |! sCA::~CA()  s9 u( V7 F) q9 V8 F4 a+ j
{
: b3 R+ }  M, S$ O}
0 Z  U/ D% A. M: O( b
- _; S% s7 c- O( `9 X* X+ L#include <iostream>
$ I* t0 E" L% K% r; J7 Yusing namespace std;
4 k1 m/ e6 n7 e5 [" o#include "复制构造函数工作原理.h"
0 c! H: V1 I. G. w. Q& F0 Fint main(void){        # f4 }9 X0 \: _' \! c0 L: H- R* ]
CA a(2,3);        # f; o1 s5 n. g* r8 {
a.print();      
/ v* D& s. x! _9 f2 e/ q0 K" e6 I$ ^ CA b(a);        ! m, [0 B" d6 O6 D( ~
b.print();
& N9 p/ m' M7 g+ f9 ?1 D" w. [' v       6 I+ D/ R2 t, w# M! \
return 0;8 w* d1 q$ `. g  J7 f
}
0 q. D4 k* H$ h& ]8 A* g0 k: `! y3 y  c3 Y3 D; v0 [

* z' e1 F6 t4 l7 p; B- r! Y' J, h8 b/ w  M4 ~9 ^9 i

4 w# N+ e0 j3 W, S
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
+ n1 K4 f/ P# I9 Z& K; o1> 初始赋值时:CA b = a;) N. e8 `2 e9 C, F$ Z
2> 按值传参时:void myfun(CA ca);
; C8 p# |9 e- s+ h1 K1 Z" ?3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
9 B+ o6 a# r/ X! J# T6 }& Q复制构造函数在以下几种情况下调用:1 `& j* W" A) q1 r1 [$ O0 E
1> 初始赋值时:CA b = a;7 k& q  U! E& w% C
2> 按值传参时:void myfun(CA ca);
% l7 _( w* Q% c" G1 c1 ~: ^
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-11-1 08:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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