鱼C论坛

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

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

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

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

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

x
本帖最后由 kangels 于 2013-3-19 10:22 编辑 / F, u2 j; @+ j5 F% r/ w

4 G% x7 w( k* H' E  ?2 k) y/ X- h% pC++自动提供的成员函数
) c8 N9 F4 ?( r5 f) w' e+ J
    ( g2 Q9 K% I1 r) Y  e8 D
  • 默认的构造函数,如果没有定义
  • 默认的析构函数,如果没有定义
  • 复制构造函数,如果没有定义
  • 赋值操作符,如果没有定义
  • 取址操作符,如果没有定义
    % G8 e* k! A) L/ U! |4 N9 [1 N
1. 默认的构造函数  U+ o; U% ?' i) U; {1 t, J
如果没有默认的构造函数,C++将创建默认的构造函数,例如定义了一个base类,没有定义任何构造函数,则编译器将提供下述默认构造函数:, t# G5 o. `8 |' E" j
base::base(){}
8 g7 ^/ \  Q5 t6 m+ @- M0 ^2 ]也就是一个什么都不做的默认构造函数9 |3 l- M( a% x8 c, [1 }2 p3 Q
4 @; ?) z) G" c' g# I1 P( J
2. 默认的析构函数
" f- ?( u$ K: v; [  ?6 h/ ]3. 复制构造函数
2 y! u) y! O( q/ Z5 r6 E复制构造函数用于初始化,将一个对象复制到新创建的对象中,而不是常规的赋值过程中。# J2 r! Q' ~! ~+ r7 x' l/ _; M5 Q
Class_name(const Class_name &)* L5 o% b) m6 o' U$ P4 t# n9 Q  x
<1> 何时调用复制构造函数
8 q5 c* o) d- t- Z7 }$ ]新建 一个对象并将其初始化为同类现有对象时,复制构造函数都将被调用。1 H) ]! E4 e  V* |5 d: g8 A
假设dog为animal类的一个对象,下面几种情况都将调用复制构造函数( R+ b  _8 n, I6 E+ C1 x/ x
animal cat = dog;) |+ s8 d) ]( D. }* i% F
animal pig(dog);& k2 Y2 W4 q+ K3 g
animal fish = animal(dog);
( Q4 Z7 K: y/ \/ _) Aanimal * pa = new animal(dog);
* l9 z+ G" y5 @& a3 t6 e! q0 l) U/ x每当程序生成对象副本时,编译器都将调用复制构造函数。
' `8 ^! L# B2 S! P3 _/ i- c+ Uvoid I_love_eat(animal an);                            // 调用此函数时将生成实参的对象副本,将调用复制构造函数
& A1 V4 ~, r* f1 c5 v7 q! Manimal Big_bad_animal();                              // 此函数返回animal对象时将生成animal对象副本,也将调用复制构造函数, U  b8 g+ \1 o
<2> 复制构造函数的功能。
! B& W" v0 d# d' {/ V7 u0 O3 l+ X! j默认的复制构造函数逐个复制非静态成员5 B. Y$ u1 S' h7 `3 C0 j2 ?  }) Z
4 |( J$ Z9 c7 X4 M! l0 ^
4. 赋值操作符. c% E5 p( P. U: W9 B0 w( W, V: C, J
ANSI C允许结构赋值,而C++允许类对象赋值,这是通过自动为类重载赋值操作符实现的。
* {, |; G) W" |% v5 }Class_name & operator =(const Class_name &);
! a/ t# J: R( r9 H7 ^<1> 何时使用赋值操作符9 F: y7 U7 T/ s$ _
将已有对象赋值给另一个同类对象时,将使用重载的赋值操作符。/ D% \# {. x  B7 K- o: W
<2> 赋值操作符的功能! D3 c! O5 e& h1 T9 P2 P
与复制构造函数相似,赋值操作符的隐式实现也对成员进行逐个复制。8 ]2 u! g' ~, M
& M4 }7 M: ]: g5 o0 S& C
5 .取址操作符
0 Z* P1 d( J7 ]4 L$ C. h% O

评分

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

查看全部评分

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

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

GMT+8, 2025-10-18 15:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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