【发布时间】:2012-02-28 19:11:12
【问题描述】:
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;
}
为什么输出打印“This is constant base”。但是,如果我在 func() 的基本版本中删除 const,它会打印“This is non constant derived”
d->func() 应该正确调用 Derived 版本,即使 Base func() 是 const 对吗?
【问题讨论】:
标签: c++