[解决办法] C++ primer并没有谈及final overrider是如何解析的,甚至连final overrider也只有寥寥数字。C++标准的相关条款是这样写的:
10.3 Virtual functions
.......Then in any well-formed class, for each virtual function declared in that class or any of its direct or indirect base classes there is a unique final overrider that overrides that function and every other overrider of that function. The rules for member lookup (10.2) are used to determine the final overrider for a virtual function in the scope of a derived class but ignoring names introduced by using-declarations.
..........
[Note: the interpretation of the call of a virtual function depends on the type of the object for which it is called (the dynamic type), whereas the interpretation of a call of a nonvirtual member function depends only on the type of the pointer or reference denoting that object (the static type) (5.2.2). ]
10.2 Member name lookup
Member name lookup determines the meaning of a name (id-expression) in a class scope (3.3.6). Name lookup can result in an ambiguity, in which case the program is ill-formed. For an id-expression, name lookup begins in the class scope of this; for a qualified-id, name lookup begins in the scope of the nested-name-specifier. Name lookup takes place before access control (3.4, clause 11).