鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
% o: a& e4 t6 r% Y1 R: v5 r
5 q" b3 d8 x+ \( {class CA5 C. M7 Z0 y2 w$ d% W1 S# Y
{: m6 |7 W& N/ q, f0 Y1 F
public:
' B+ i' f) T6 Q, t- p        CA();
8 @8 N; ]' ]9 F  C        CA(CA&);+ [+ M3 A2 e& Q4 P( |
        CA(int ,int );/ n- Z) l$ _# ~, ?8 C% X8 _
        ~CA();
" g  D4 y9 j2 x8 c% A        void print();$ N% z( M2 f& d8 A" n, x2 j

% U. T- t1 _* @2 u( B; oprivate:
0 D" w# a2 I' j        int i;0 y. ?# D' L( Q' I
        int j;
' ]- D( C4 E0 Q};- _5 v( p6 g9 i$ X! b, U  |
! \2 ^$ c( c$ d* k  O" l
CA::CA()
( E% c" T. q- [6 P$ M) K{
5 V2 U: w5 b" S5 ^1 D}
) H$ f0 e- Y+ C+ u$ X, V* i. a6 ]7 X( i0 z
CA::CA(CA&one)
; n* R$ o7 @; C" z# S/ l6 A1 s% E{
3 }& l/ i' i0 d# i        cout<<"调用复制构造函数"<<endl;
: i2 s4 p2 N: J1 A        this->i=one.i;! N6 N  b3 k" A, Z  }: S
        this->j=one.j;' R# m. D/ s. H# U0 @+ j
}2 w. \3 N' ^( }& U2 L
0 J- S( Y. \* F
CA::CA(int m,int n)
: U7 \; a5 G) B6 z/ b$ D) t4 G! e{
" r- }1 b! i) M        i=m;2 s4 S0 Z$ w# ~4 u9 O" u
        j=n;
, f* r4 S" i+ F3 p* N) y}* y, }4 S  v% X, S" T5 d% {
0 F4 v7 L8 h4 R, y9 I  X
void CA::print(), S* X( K) w" _+ O& n- Z$ |
{
8 V3 U' H, b( f  P        cout<<i<<endl<<j<<endl;; u0 S8 [! ]8 e4 @. E0 |
}' j" e3 h/ N5 g4 S

3 N4 ^3 Y& s5 K7 eCA::~CA()
) x! W/ U5 d' v; R, T8 L, W5 I{
! Z6 ?7 ]' G  A}, Q' |7 ?$ l; T# R$ a

, a4 ?1 D7 @- M+ H/ N8 h7 I1 S. ^#include <iostream>8 E$ Q) \* @5 S( ^+ H7 t
using namespace std;
. ]2 M0 V$ M# h0 L4 c- h7 r$ F  r2 F#include "复制构造函数工作原理.h"
5 F2 ~9 r0 B) N' uint main(void){        
: V  I0 \4 Y" W2 ]3 \7 |) U& fCA a(2,3);        2 X3 a0 }. j: n  S6 y) M9 T
a.print();       . A) |2 K; U! V  u* ^( e
CA b(a);        5 M% m# S  J5 U' i3 ~
b.print();1 K$ T$ b% i1 ^" T2 `. C. s* P9 T
       ! s7 i: _. g/ ]" [: [
return 0;+ J. B" p9 A6 V7 ^, w
}
2 @! V# I2 w2 p% e8 [- O' G* u. b0 E) ?3 y* y

5 @1 O, b/ W  |$ K- C) X9 z. K& n; Q7 Y# ]* }2 S8 X
# C; s7 V" @4 w+ Y; ~, D
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
0 P- g; @1 n* A4 Q" y! l9 F1> 初始赋值时:CA b = a;1 o/ N6 `  z) D1 `' d
2> 按值传参时:void myfun(CA ca);. s8 e: `) _, O2 G3 Z
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
0 E, K0 G4 i" Y# o7 S% H3 J! W复制构造函数在以下几种情况下调用:& G  P! E) p- e
1> 初始赋值时:CA b = a;
, a9 S7 b% J& R' l  ]% d2> 按值传参时:void myfun(CA ca);
' Z2 G1 d. [4 `! z
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-5-21 12:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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