鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
; ?( ]. I, z% x0 H
3 i% o3 _, t: S# `class CA
3 ~0 a% e3 A8 L5 j{0 Z) i( r# N# n# @9 w( r
public:- L+ `$ P  b& c+ a$ ^# x/ U
        CA();
8 Z5 F: u; M' W  T5 L        CA(CA&);
: w7 w: t- y2 V. C- g        CA(int ,int );
; ~8 B9 e' l2 T# H+ H        ~CA();# T8 W: x  O0 Z
        void print();
( O6 l; y9 y: r5 K) X. Q& y2 v# w# H* y; R" P3 B$ r( k
private:$ h4 W( d6 \& I* e; z* n! g+ T; d
        int i;
, }; v* T3 R; @$ d8 ]        int j;5 ?% c' W: i, D0 {
};
+ f) c% O9 W0 H1 `' G
0 y8 j7 x" p  H$ {5 L7 @CA::CA(). ^6 d4 \  C9 g2 Q: Q" |- s
{
! V+ }+ \, l5 L  f# N8 w! y}
! `+ J& l5 W/ k) j& K' h% J
6 Q0 y! p5 E/ n& y4 M2 {* F! CCA::CA(CA&one)2 c1 s1 K8 j/ F8 `
{
4 \# N$ h, g  G0 N        cout<<"调用复制构造函数"<<endl;, k) `4 K6 K! M& Y9 D
        this->i=one.i;& \- r5 N7 E2 y5 i
        this->j=one.j;
* `9 v' E; o2 P1 l0 n9 p; m- I9 z% F}
' i) j4 T" l5 O3 _3 x( U3 Q+ S& X
5 ~* u1 s0 [6 S+ ^$ vCA::CA(int m,int n)7 p2 i6 C& c2 K4 |( h
{3 H4 e  ^! j: l: u  E* E# S
        i=m;
0 Z" e1 {# A9 s  P9 J        j=n;
8 I. T1 }! s+ K. X, s) Z7 Y, _}
: o* y9 O% B; |2 ]5 V
/ K/ g% X# j5 V# \) X& c4 Tvoid CA::print()
. v  j8 Q5 V; l4 S) j{6 j1 J0 J" {( o  C: v$ u8 S4 p
        cout<<i<<endl<<j<<endl;% j/ R1 z" s- {- {
}5 J  U1 V5 i- K' |5 v3 X
; r! [+ ^4 Z: E5 @7 W7 [8 s
CA::~CA()( r! x* J  t% s: ?: ?
{
- S4 c5 L6 v( Z+ b}
1 Y3 O0 g) L1 r. ]! f  G0 d5 a0 n; C; ]& r! N
#include <iostream>, S3 ^# t$ m3 q
using namespace std;
' W$ {* j% M4 |' M+ h7 R#include "复制构造函数工作原理.h"
( z- A" ^# X7 [" M2 Zint main(void){        
/ J" v# C2 X: {3 s5 d9 wCA a(2,3);        ! G: {9 ?/ ~9 }2 X3 o1 y
a.print();      
3 V$ K0 t, @6 s3 E% Y1 i6 V4 Y CA b(a);        
. Q* w9 K5 K5 u. `b.print();
5 i/ Z# E) e& m1 R! x& f       ( {0 y* V0 D9 h& z# D
return 0;% O9 N- J3 I5 _/ n/ \
}
4 W7 D7 K3 D4 O8 n6 }! I* L
1 n6 O9 p9 d- E* G( Q
3 Q4 R4 H4 V7 m/ H$ P5 N4 A7 d$ Y) X3 i

# n) i# p. i% M: k5 W
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:7 d0 [7 u" z1 l- f& h6 P7 \0 }) _
1> 初始赋值时:CA b = a;1 J# @/ r- W  Z
2> 按值传参时:void myfun(CA ca);
' j5 Q6 I% ^' s7 Z* X# f6 W( U! r3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
) j7 e& T- [$ V5 B1 _. C0 }! c复制构造函数在以下几种情况下调用:) Y) f5 K7 k  I; p. {8 X( n: o
1> 初始赋值时:CA b = a;0 e! [0 m5 e0 |& b6 |7 G
2> 按值传参时:void myfun(CA ca);
% f' G6 D5 x7 e# `/ W7 |0 j2 q* N
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-12-6 01:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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