function, 需要用 Base::func(); 这样的语法
构成 overridding 的条件:
函数名一致
函数参数一致
函数返回值一致 (若返回类型具有协变的关系, 也是可以的, 如下面代码...测试平台的配置信息:
系统: Windows 10
编译器: cl (x86)/g++ (x64)
若在 64 位下编译, 需要将所有的 1 改为 2, 2 改为 4
typedef void...(*Fun)();
Animal* a = new Animal();
int* p = (int*)a;//*p 是一个指针, 指向虚函数表
int* q = (int*)*p;//q 的值与 *p.../*p 是一个指针, 指向虚函数表
int* q = (int*)*p;//q 的值与 *p 相同, 指向虚函数表第一项 , *q 是函数指针
//调用 Dog::eat(), 等价于 ((void(...这件事情和不同的平台, 不同的编译器都有关系, 因此只需了解虚函数实现多态的原理即可, 不必强求用代码实现.