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;
}
Dlaczego wydruki wyświetlają "To jest stała baza". Jednak jeśli usunę const w podstawowej wersji func(), to wypisze "To jest nie ustalone". ?funkcja wirtualna const a funkcja wirtualna niestanowiąca warunku
Możliwe duplikaty http://stackoverflow.com/questions/7504300, http://stackoverflow.com/questions/3827374 i http://stackoverflow.com/questions/4152799. –
możliwy duplikat [funkcji wirtualnej, która jest const w klasie bazowej, a nie const w wyprowadzonym] (http://stackoverflow.com/questions/7504300/virtual-function-that-is-const-in-the-base- class-and-not-const-in-the-deriv) –