C++隐藏的概念(例子解析)

所谓的 隐藏,指的是派生类类型的对象、指针、引用访问基类和派生类都有的同名函数时 ,访问的是派生类的函数,即隐藏了基类的同名函数。隐藏规则的底层原因其实是C++的名字解析过程。在继承机制下,派生类的类域被嵌套在基类的类域中。派生类的名字解析过程如下: 
  1、首先在派生类类域中查找该名字。 
  2、如果第一步中没有成功查找到该名字,即在派生类的类域中无法对该名字进行解析,则编译器在外围基类类域对查找该名字的定义。 
总结一下隐藏的特征: 
1、如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。 

2、如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。原话地址:https://blog.csdn.net/jixingzhong/article/details/1858943#1404105

下面是自己写的例子:


运行结果:


可见派生类类型的对象、指针、引用访问基类和派生类都有的同名函数时,访问的是派生类的函数,即隐藏了基类的同名函数;

参考 文献:jixingzhong的专栏--区分重载(overload),覆盖(Override)和隐藏(hide),文献地址:https://blog.csdn.net/jixingzhong/article/details/1858943#1404105

猜你喜欢

转载自blog.csdn.net/u014712482/article/details/80541550