Константные объекты и функции

Последнее обновление: 11.03.2023
Упражнение 1

Дан следующий класс Integer, который хранит некоторое число:

#include <iostream>

class Integer
{
public:
    Integer(int number);
    int getValue();
    void setValue(int number);
    void print();
private:
    int value;
};
Integer::Integer(int number)
{
    value=number;
    std::cout << "Object created" << std::endl;
}
int Integer::getValue(){ return value; }
void Integer::setValue(int number) { value = number; }
void Integer::print()
{
    std::cout << "Value: " << value << std::endl;
}

Исправьте класс, сделав константными все функции, которые можно сделать константными. Определите в функции main переменную и константу этого класса Integer и и проверьте, какие операции можно применять к ним.

Решение
#include <iostream>

class Integer
{
public:
    Integer(int number);
    int getValue() const;
    void setValue(int number);
    void print() const;
private:
    int value;
};
Integer::Integer(int number)
{
    value=number;
}
int Integer::getValue()const { return value; }
void Integer::setValue(int number) { value = number; }
void Integer::print() const
{
    std::cout << "Value: " << value << std::endl;
}

int main()
{
    // переменная
    Integer n {10};
    n.print();                      // Value: 10
    n.setValue(n.getValue() * 2);   // можно изменить
    n.print();                      // Value: 20

    const Integer m{50};
    //m.setValue(n.getValue() * 2);   // нельзя изменить
    std::cout << m.getValue() << std::endl; // можно только получить
    m.print();
}

Консольный вывод:

Value: 10
Value: 20
50
Value: 50
Дополнительные материалы
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850