Const ключевое слово для наследования - PullRequest
0 голосов
/ 11 апреля 2020

Я написал такую ​​программу

#include <iostream>
using namespace std;

class Fruit {
private:
    string m_name;
    string m_color; public:
    Fruit() = default;
    Fruit(const string& name, const string& color)
        : m_name{name}, m_color{color}
    {
    }
    const string& getName() const{
        return m_name;
    }
    const string& getColor() const{
        return m_color;
    }
};

class Apple : public Fruit {
private:
    double m_fiber; public:
    Apple() = default;
    Apple(const string& name, const string& color, double fiber)
        : Fruit{name, color}, m_fiber{fiber}
    {
    }
    const double getFiber() const{
        return m_fiber;
    }
    print(){
        cout << "Apple(" << getName() << ", " << getColor() << ", " << getFiber() << ")\n";
    }
};

int main() {
    const Apple a{ "Red delicious", "red", 4.2 };
    a.print();
}

Этот код не компилируется. Однако, если я уберу слово «const» внутри int main (), оно будет работать. Почему это так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...