
class Base{public: virtual voID eval() const { std::cout<<"Base Const Eval\n"; }};class Derived:public Base{public: voID eval() { std::cout<<"Derived Non-Const Eval\n"; }};int main(){ Derived d; Base* pB=&d; pB->eval(); //This will call the Base eval() return 0;} 为什么pB-> eval()会调用Base :: eval()?
谢谢
解决方法 这是因为一个声明为const而另一个声明为const.一个功能被另一个隐藏. Derived中的函数将其隐藏在Base中,因为它们具有相同的名称,而它们不是同一个函数.我的编译器在这里发出警告,你的吗?
总结以上是内存溢出为你收集整理的C虚拟Const函数全部内容,希望文章能够帮你解决C虚拟Const函数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)