相关疑难解决方法(0)

虚函数const与虚函数non-const

class Base
{
   public:
   virtual void func() const
   {
     cout<<"This is constant base "<<endl;
   }
};

class Derived : public Base
{
   public:
   virtual void func()
   {
     cout<<"This is non constant derived "<<endl;
   }
};


int main()
{
  Base *d = new Derived();
  d->func();
  delete d;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么输出打印"这是常数基数".但是,如果我删除func()的基本版本中的const,它会打印"这是非常量派生"

d-> func()应该正确调用Derived版本,即使Base func()是const右边的吗?

c++

15
推荐指数
2
解决办法
3万
查看次数

标签 统计

c++ ×1