关于同名隐藏的一些思考,不一定对。
《高质量C/C++编程指南》中有提到同名隐藏即
子类子类中的同名函数屏蔽了父类的同名基类方法,其规则如下:
如果子类的函数名与基类的函数名同名,但是参数不同,此时,无论有无virtual修饰,基类函数都将被“隐藏”。(依旧被继承)
.如果子类的函数名与其参数都与父类相同,但是父类没有virtual修饰,此时基类函数被隐藏
思考:为什么会发生同名隐藏?
我个人觉得这应该是调用顺序的问题。C++中,遇到一个函数调用,需要根据名字来确定调用的是哪一个函数,这时候如果派生类定义了该函数,就不会在基类的名字空间中去找。如果需要查找,则需要Base::fun();声明在哪个空间中。