本文主要是介绍virtual 关键字中 cv限定符的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对于如下定义:
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限定符不相同,故不是虚函数的重写
这篇关于virtual 关键字中 cv限定符的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!