码迷,mamicode.com
首页 > 其他好文 > 详细

重载、覆盖、隐藏的区别

时间:2015-05-11 23:24:40      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数。对于这两个函数的调用,在编译期间就已确定,是静态的。也就是说它们的地址在编译器就绑定了(早绑定),因此重载与多态无关。

覆盖(重写):子类重新定义父类虚函数的方法。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的。因此,这样的函数地址是在运行期间绑定的(晚绑定),重写与多态相关。

  重载的特征              覆盖的特征

  1.相同的范围(同一个类中)    1.不同的类中(父类和子类)

  2.函数名相同         2.函数名不同

  3.参数不同          3.参数相同

  4.virtual关键字可有可无      4.基类中必须有virtual关键字

 

隐藏的两种情况:

1.若派生类中的函数与基类的函数同名,但参数不同,此时无论有无virtual关键字,基类的函数被隐藏。

2.若派生类中的函数与基类的函数同名,且参数相同,若基类函数没有virtual关键字,基类的函数被隐藏。

重载、覆盖、隐藏的区别

标签:

原文地址:http://www.cnblogs.com/SnailProgramer/p/4495759.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!