原帖由 coredump 于 11-5-2009 14:17 发表
对于继承中名字隐藏的设计理由是这样:
如果一个基类中的函数是非virtual的,则表示它不像让子类重写其行为,而如果子类出现了和此基类函数同名的函数,则说明子类对此函数的行为和基类有完全不同的理解,名字相同可以视为巧合,这时候如果不隐藏积累的同名函数,则程序的行为可能会不符合基类的预期。绕过这个限制可以通过上面这样子类重写一边wrapper实现,也可以通过在基类中把这个函数改为virtual来实现,其实子类如果需要写wrapper来让基类的隐藏函数可见时,也就说明这个函数需要重新声明为virtual了。
欢迎光临 FreeOZ论坛 (https://www.freeoz.org/ibbs/) | Powered by Discuz! X3.2 |