最近再读一遍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.
本文针对C++ Primer Plus中关于虚函数的描述进行了讨论,并提出了原文可能存在表述上的误解。通过对比英文原版与中文翻译版的内容,指出若Brass::ViewAcct()未声明为虚函数时,不论对象类型如何,都会调用该方法。

956

被折叠的 条评论
为什么被折叠?



