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;
}
「これは定数ベースです」という出力が表示されるのはなぜですか。しかし、func()の基本バージョンでconstを削除した場合、これは "これは定数ではありません"という文字を出力します仮想関数const vs仮想関数non-const
d-> func()はBase func ?
可能な複製http://stackoverflow.com/questions/7504300、http://stackoverflow.com/questions/3827374、およびhttp://stackoverflow.com/questions/4152799 –
[派生クラスのconstではなく、基本クラスのconstである仮想関数]の重複可能性があります(http://stackoverflow.com/questions/7504300/virtual-function-that-is-const-in-the-base- class-and-not-const-in-the-derived) –