Поскольку многие ответили, оператор + не является членом класса Number, это глобальная переменная. Рассмотрим функцию Show
:
void Show(const Number& numberObj) // const, by-ref is IMMATERIAL
{
std::cout<< numberObj.x;
}
и метод Show:
class Number
{
private:
int x;
public:
void Show()
{
std::cout << x;
}
};
Теперь, если вы замените Show
любым перегруженным оператором, принимая 1 или 2 аргумента - только член класса может получить доступ к частным данным, а глобальная реализация - нет.
Для этого вам нужно сделать глобальный Show
друг класса (в объявлении класса), а также любой глобально реализованный оператор.