C虚拟Const函数

前端之家收集整理的这篇文章主要介绍了C虚拟Const函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
鉴于以下代码段,
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中,因为它们具有相同的名称,而它们不是同一个函数.

我的编译器在这里发出警告,你的吗?

原文链接:https://www.f2er.com/c/117782.html

猜你在找的C&C++相关文章