鱼C论坛

 找回密码
 立即注册
查看: 2122|回复: 0

[C++个人笔记] 隐式成员函数

[复制链接]
发表于 2013-3-13 12:12:50 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 kangels 于 2013-3-19 10:22 编辑 , ^% r) ]( f* ]% y( j; s
" W; ?. }- w( K0 g
C++自动提供的成员函数' V+ D# X6 n1 J( m* J2 m

    1 l2 r. `5 d* `/ }; L
  • 默认的构造函数,如果没有定义
  • 默认的析构函数,如果没有定义
  • 复制构造函数,如果没有定义
  • 赋值操作符,如果没有定义
  • 取址操作符,如果没有定义
    4 `; P; v6 ^" [2 r+ {4 T/ a
1. 默认的构造函数
. C- ^7 w0 x; V6 h' T. L2 U1 i如果没有默认的构造函数,C++将创建默认的构造函数,例如定义了一个base类,没有定义任何构造函数,则编译器将提供下述默认构造函数:
- L. E1 p0 R* V+ b. Abase::base(){}8 f9 n$ G" N1 a/ [& j5 h
也就是一个什么都不做的默认构造函数" g2 J: O0 \3 J! S  x6 P

' Y3 [6 x9 e% H! g2. 默认的析构函数
% h( a; R- H2 r- T# P' S. d3. 复制构造函数
7 J' A& X0 Z/ J9 {9 f0 s复制构造函数用于初始化,将一个对象复制到新创建的对象中,而不是常规的赋值过程中。
) G% r7 `  ^, r! j2 _Class_name(const Class_name &)0 \: H8 J, W% R, k# ~1 ]# N
<1> 何时调用复制构造函数. X  h2 [' E3 ^; p
新建 一个对象并将其初始化为同类现有对象时,复制构造函数都将被调用。
/ L7 \' b" c# L6 L) F假设dog为animal类的一个对象,下面几种情况都将调用复制构造函数
3 g# A) p; w0 v0 H& Vanimal cat = dog;, L- T3 ]- K" r5 D6 l# r  M: }
animal pig(dog);$ M3 z& @3 t* L0 W, N
animal fish = animal(dog);
. ~% F5 Y; o4 n( \) r2 s0 fanimal * pa = new animal(dog);) a5 z# i1 G% t9 C- e6 F- J, Z
每当程序生成对象副本时,编译器都将调用复制构造函数。
/ K2 ?1 w( [( d' s* r' _" v% ovoid I_love_eat(animal an);                            // 调用此函数时将生成实参的对象副本,将调用复制构造函数9 I2 [) w+ V7 a3 O
animal Big_bad_animal();                              // 此函数返回animal对象时将生成animal对象副本,也将调用复制构造函数
. R7 A. R  c5 {5 [<2> 复制构造函数的功能。
9 s7 i( B' F$ ^默认的复制构造函数逐个复制非静态成员1 v8 C' ^9 H, ~2 E% C& Q3 ]6 |7 j

7 `' |$ D1 \1 `6 [  Z4. 赋值操作符( ~( V) S( C  f* I: Q9 N, Z  {3 j
ANSI C允许结构赋值,而C++允许类对象赋值,这是通过自动为类重载赋值操作符实现的。
2 g( D- [/ m6 G4 R2 d% bClass_name & operator =(const Class_name &);- ~4 T6 e* E. Y+ ]0 z/ I9 o9 w
<1> 何时使用赋值操作符/ z' z6 u0 K$ `; G7 x
将已有对象赋值给另一个同类对象时,将使用重载的赋值操作符。
6 {, r# ?! u4 U2 t  o& B<2> 赋值操作符的功能+ k; \- ~3 a3 U$ w4 f5 V
与复制构造函数相似,赋值操作符的隐式实现也对成员进行逐个复制。
4 j& F7 U4 w1 r
& w  {" G; j  l, B5 .取址操作符
0 [2 n9 i5 d& [8 D# K

评分

参与人数 1鱼币 +1 收起 理由
(@_@) + 1 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-8 17:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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