鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ) [2 A% B* v* h, s" j+ I$ m, [

! U, {- \' _2 C- H( C0 jclass CA" s; _2 P/ L) n  U6 J8 e- y$ T
{7 ?8 \+ Q6 D6 H
public:# L* U. Q! T9 C% \- P
        CA();
. `# [; R& I8 h3 V9 f. `        CA(CA&);
; ~7 f& N8 o1 B. ~9 M- v. Z* P        CA(int ,int );
1 S7 ^% h/ L$ y# }- y        ~CA();
; r9 E: U8 ]4 {        void print();+ F) Y/ n: r. q/ K3 I5 }
5 g1 w7 L  X) w/ H8 K2 \+ q0 O
private:7 d4 F6 M. |+ ~" w+ t# d
        int i;
* |6 Y1 Q. Z  _9 o        int j;$ E. M+ f/ W: R) u" P( i  Q
};5 }7 ^, r% f/ R3 x

( x; h6 Y9 n" D% {' ^  \CA::CA()4 J: e7 O- N& C) ^6 g
{
- r# c3 a1 m9 L& E8 Q}: B% A+ @# ]4 R

' G$ y8 ~: A& wCA::CA(CA&one)9 Q9 y1 A2 g% `6 W
{2 p. {! \) ^" i+ m' ~
        cout<<"调用复制构造函数"<<endl;
: f; v( X6 I% G' J* K- m% R        this->i=one.i;& \0 e" @/ V. W7 O
        this->j=one.j;
( V! Q% u: D+ h3 [3 p0 R}6 X  ~) R% w% W8 o' Z
( n- B8 C- x  P* D: f5 Y4 Y
CA::CA(int m,int n)$ R3 a" }: \& _. m8 o# o+ t
{" G# v! e8 K* l1 H- C
        i=m;& O2 q& {# D1 r/ }! I" s! _5 E
        j=n;
4 h! M/ @; s' ?3 T* ]1 p; R% X}) s2 }/ {9 y# ?' N8 ~
9 B; m3 j- s$ l6 l/ H1 k
void CA::print()
7 J- U% S% V5 X! C{- U# a7 |. Z$ P4 c0 R
        cout<<i<<endl<<j<<endl;( ]# a( f* e" c$ H+ \. y
}( }5 Y0 O8 X6 x3 s. r+ U
- g: i2 G% V0 _; `1 ^( K
CA::~CA()
  T& N. [4 [/ c; y0 c{
; b3 V! H5 ?( B}
. I* s) e2 b" y# b& `* C1 D/ c; ]2 ^% _8 g, l" g
#include <iostream>
$ W2 c9 L6 Z9 W% e- b' |" b- Fusing namespace std;
" G" g4 k7 U4 k5 O1 z' Z$ I#include "复制构造函数工作原理.h"1 ?2 j( v2 f  @3 i" ?. ]# n, ~; a
int main(void){        
7 L) G+ ]% ^( _) C, g; T$ Q' p  jCA a(2,3);        & Q/ D4 r* V2 w0 u' j3 ]
a.print();       $ }+ s) O& w+ P9 B& q, {
CA b(a);        - C5 i  V1 \2 h: b2 U
b.print();+ h8 T1 j7 G+ E* G
       - `( B) g7 v! k3 b
return 0;
7 `6 B! @( s- {}, V6 S" M0 \% A1 q- N, ?: p
0 [0 b* ?# M9 z
' Z2 Y9 Z" A5 d. B! n7 v+ U7 j$ k# _
9 s$ w( x. C/ z5 ^8 m2 M( q# a
" D  \7 @7 E0 Q$ J, M( b+ w
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
. g3 l" Y+ O" T8 ?4 D1> 初始赋值时:CA b = a;
+ G- Z# o+ W0 }) a+ Q5 U+ R) @7 ]+ c2> 按值传参时:void myfun(CA ca);
+ V' J- z6 J2 z* N3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
# E: t% q2 ~0 q
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-11-26 13:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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