标题即本文结论,但关键点在“同名”二字。
关于“同名函数”这四个字,在学习C++继承时可能会在两个地方遇到,一个是函数重载,一个便是继承重写。
在学习重载时,课本应该有类似表述:函数名相同,但参数列表不同;
在学习继承时,课本应该有类似表述:派生类会隐藏基类的同名函数;
又由于一般都是先学重载,后学继承,因此很多人会将这两处的“同名函数”的含义搞混淆。而实际上,继承中的“同名函数”,指的仅仅是函数名相同,而参数列表可同可不同,也就是说,只要派生类中出现了与基类名字相同的函数,那么基类中的同名函数都将被隐藏,老规矩,上图:
func1()和func2()由于被隐藏而无法通过普通方式调用,只能通过加基类域名的方式调用。