Тема: Чому функція абстрактного класу не може бути тільки для читання
struct Abstract {
virtual std::string getClassName() = 0; // pure virtual
void show() const
{
std::cout << "Abstract = " <<this->getClassName() << '\n';
};
};
struct a : Abstract {
virtual std::string getClassName() override
{
return "a";
}
};
struct b : Abstract {
virtual std::string getClassName() override
{
return "b";
}
};
int main()
{
a obj;
obj.show();
return 0;
}
Чому функція абстрактного класу не може бути тільки для читання ? Якщо писати "const" тоді виникає помилка
error: passing ‘const Abstract’ as ‘this’ argument of ‘virtual std::string Abstract::getClassName()’ discards qualifiers [-fpermissive]
Метод show не модифікує об'єкт, а лише бере дані.