鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 3 Q( R/ J: V4 y. {7 }  O4 t# b
6 B# U2 u. X4 k9 H9 K( l/ D
class CA
! Y; j- N6 h" f: ^4 C( C- v& p{
; s3 Y0 x( V  Y1 S) G( {public:
7 y6 B; N6 r: G* L- M% N' t        CA();# p; J2 C  p% _& ?4 M7 D3 x
        CA(CA&);2 Y( b% s" U. N
        CA(int ,int );0 R. _. @; L, h! e. ^+ s
        ~CA();
) ^4 V4 x5 J7 y) i) }        void print();
# F- e8 n5 _% Y  Z
7 V0 V# p/ f" `6 O' t8 \3 j4 |private:8 [9 l  J& Z; i% B4 `- n& t
        int i;8 t9 u! c& S7 M3 J4 u
        int j;/ N; l) r6 k7 f7 o
};% L: ^' \" P* A2 J8 p
9 Z$ ?1 M+ s8 N- j. b
CA::CA()2 K5 f" V' o" W; b
{3 J, h5 ]# g/ X+ w7 {" A$ n2 Y* D+ M
}
# i% n# E: j, n! ?$ _! `* C  E% E! N7 ^
CA::CA(CA&one)
: w1 `& g; R! _# O! N1 [1 _1 n{
0 B3 d. }9 e8 C: U0 ]( ^  X2 y        cout<<"调用复制构造函数"<<endl;
- z: Q+ L4 @( p! ~% O        this->i=one.i;1 E2 W0 X, {* B' `  U; ?8 i
        this->j=one.j;
( q: O: n9 ]8 @9 T7 Z; k1 P2 B% N}# a: A  \, G1 K

# t5 j! s, b4 }. s5 c! ACA::CA(int m,int n)' q* U4 P$ u. r4 }" {' z+ n$ t
{( a, o) N) k* k' N
        i=m;
- }3 L! @2 s# ]/ l        j=n;* {! }8 V! E) y( t2 {2 w+ J
}
6 m, ~! W, m& o) I
, a* n; j* A/ Z+ j1 s9 |& Mvoid CA::print()
1 r# _  I$ _$ G! m+ h& f# T{
4 d, l& j: ?# n) S! D        cout<<i<<endl<<j<<endl;2 g* C( T; @- ~# `) Y! |
}- v$ \. z7 R; J! u; p2 q
1 ~( X1 ]! ~/ ^7 z5 \3 G5 r8 [
CA::~CA()4 o5 b. `9 u% i" H, H
{
0 T- |& Z$ A# v& A}
& l% U9 w) n8 z  S. n! u
, M: n6 C/ n5 j1 a6 D; {#include <iostream>
2 i: Q  R! j' W! C6 Gusing namespace std;: b2 i! ?9 r5 L6 l1 @5 n+ Y
#include "复制构造函数工作原理.h"
+ N1 z, ^: D7 Oint main(void){        . c% F( }+ d# [; k5 ^* ^
CA a(2,3);          L" [7 {7 [  V( C
a.print();      
6 v8 M$ c. }- [' F( G CA b(a);        0 y2 c# c) P6 |. a
b.print();
4 M* c/ ]" h- P/ [% x; B% ~# e# D      
$ R& [+ B  e9 l return 0;. F4 c- F. l/ ]  z% r" k
}4 \3 y2 B' B: f5 @( Q! C& u
; I7 q2 k% g7 r. G/ e

7 `/ R0 @: @$ E9 W
7 z% V6 T: `  G& `: d
" G& k5 y3 m) `- K- g; s6 K
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
4 Y: Z1 E; r8 X. k9 U! d0 V2 i1> 初始赋值时:CA b = a;
, Q7 O8 i! u# o$ F3 }2> 按值传参时:void myfun(CA ca);
  ]) l# y- s3 X3 x- a; R7 [3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
4 `, }4 L% w% k' f, [) |" _复制构造函数在以下几种情况下调用:6 Q1 y# U8 p; H3 P+ P3 M
1> 初始赋值时:CA b = a;
7 J! I- w4 r: W7 ^, l2 c2> 按值传参时:void myfun(CA ca);
. h+ _0 ?$ j1 G
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-10-11 07:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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