对于如下定义:
struct A { virtual int f( ) { return 1; } } a;
struct B: A {int f( ) const { return 2; }int f( ) volatile { return 3; }int f( ) const volatile { return 4; }
} c;
int main(int argc, char *argv[ ]) { A *p=&c; return p->f( ); }
主函数main的返回值是_____:
A. 1 B. 2
C. 3 D. 4
答案是:A
为什么呢,难道不是因为虚函数的原因调用类B中的f()函数吗
原因就是类B中没有重写,是重载了类A中f() 函数
根据cppreference中的定义
由于cv限定符不相同,故不是虚函数的重写