最近再读一遍C++Primer Plus,在虚函数描述(中文版P501)中有以下描述:
如果数组成员指向的是Brass对象,则调用Brass::ViewAcct();如果指向的的是BrassPlus对象,则调用BrasPlus::ViewAcct()。如果Brass::ViewAcct()被声明为虚的,则在任何情况下都将调用Brass::ViewAcct()。
个人觉得这句话描述为有应该是:
如果Brass::ViewAcct()未被声明为虚的,则在任何情况下都将调用Brass::ViewAcct()。
特地翻阅了英文原版的描述,发现和译本意思相同,可能是原版就有这个问题,而译者翻译这段时并未仔细考虑,网上搜索了一下,发现也有网友提出此类疑问,特写此帖说明。
英文描述:
If the array member points to a Brassobject,Brass::ViewAcct() is invoked;if the array member points to a BrassPlusobject,BrassPlus::ViewAcct() is invoked. If Brass::ViewAcct() were been declared as virtual, Brass:ViewAcct() would be invoked in all cases.