鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 0 K6 \: x' s$ W9 B5 j- c9 `& W

& e% o1 N4 b3 U4 R) I; lclass CA
+ `* y! N/ A; E  Z{
& m7 M& T/ P- g( Zpublic:6 U/ x7 U: D$ N6 ^
        CA();
. Z4 S- A( a1 I8 Q6 m5 _, o4 c        CA(CA&);
- \) O  g; B2 l3 f7 J8 Q! ?        CA(int ,int );1 k+ n1 u/ q5 Y  y" u
        ~CA();% q7 V1 @* P& c. j
        void print();
) N, t/ L+ J: D6 J9 z% b5 v% P2 Z- G' [0 N* S1 N; Z
private:1 d1 w3 ^9 _; I! m9 u
        int i;; f: B: o; F# O/ n, D
        int j;( }8 P( H6 X- H" H
};
- d# i1 o0 _1 v, ?
* W. L! I$ D/ C, _( i& aCA::CA()/ W% b  E4 Z# M$ e
{0 Y6 w/ J; J( x! X
}
1 N1 a* q- x4 |' j& G) Y& p
0 B7 ?% G9 ^, E$ ^9 q: l* wCA::CA(CA&one)$ M. l7 K, _5 n/ p  B( \8 c
{
2 K" @' U5 f" L& p$ k5 f        cout<<"调用复制构造函数"<<endl;( }9 ?/ {: c. b% H9 g8 F
        this->i=one.i;
0 v! e, ^8 a& W1 J( @; q# f0 w        this->j=one.j;9 C) P  u, q/ o4 w  t9 Y
}
3 P$ y$ b  p9 s& {/ ]8 N
  ^0 Y  g# \5 Y/ uCA::CA(int m,int n)
" ]% P& g$ X1 c4 c{9 j2 i* }& G) Z* D
        i=m;# q3 a1 d& M5 u5 i! G3 {* k
        j=n;
- U$ v% a5 o1 q- W$ S* D+ m- F}
& b7 \: k5 l0 A3 b) B9 c7 b9 D. T8 G
void CA::print()
* l# n9 ~2 c) ^2 @# C6 z{/ i( ?  o* ?+ x8 M  w
        cout<<i<<endl<<j<<endl;
+ H9 L' s3 J  t/ e' }+ Q}
+ `+ R+ M2 D* N" {; P
! K8 x1 r- J3 vCA::~CA()5 S& @  B9 E0 I, S
{2 t+ i! |: l0 m/ S& _* A8 ?& Q6 l. n0 s
}4 e( X- @4 r- z5 L: f& h; V/ |
8 G! Y) c, q0 i5 R2 r
#include <iostream>
$ U% h# o3 W+ Dusing namespace std;  C/ u* b& w+ }9 f! ~& B
#include "复制构造函数工作原理.h"
: `; T4 o* U% N1 S1 T8 Yint main(void){        
$ E/ s- s4 f. R1 P) T7 `# D* \; NCA a(2,3);        
+ G- q" C) T8 Q0 ea.print();       8 i2 J8 j7 A9 L# h
CA b(a);        . `) ^+ Z3 Y4 L$ D: `+ F2 v: F
b.print();
' C, K3 X% V5 N. B0 b) X1 s       4 K/ O9 E9 B- g: E
return 0;! T0 D& ^: n7 J7 x) C  n
}# k& C) h& e% [( t; p
8 J9 c' U9 p3 t9 M. p

: H. S2 |% p4 q% N# b; W! n( g, Z; _7 C) V# W# f

# Z' ~# `, b- j# b' F/ H5 C7 N6 ?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:9 p& w9 H) r! H# f
1> 初始赋值时:CA b = a;1 }4 V, d3 _+ O) O2 Z! v
2> 按值传参时:void myfun(CA ca);
, g7 A6 X+ e: x' G4 A" G$ x  J3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
/ W8 N+ L4 P. c; t3 B; m& E: J
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-6 00:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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