@sddvxd

Почему эта функция возвращает объект (перегрузка операторов)?

Добрый вечер
Factory Factory::operator*(const int& a)const{
  return a*this->a;
}

хорошо работает для этого примера
Factory obj1 = 1; //Первый  единственный параметр для конструктора - int 
Factory obj2 = 2 * obj1;


Вопрос: в return я умножаю два int, функция возвращает копию Factory, почему так?
  • Вопрос задан
  • 48 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Вопрос: в return я умножаю два int, функция возвращает копию Factory, почему так?

Потому что ты так определил этот оператор. Написал бы int Factory::operator * -- всё было бы по-другому.
Если твой вопрос "почему это компилируется", то ответ -- потому что у Factory есть не-explicit конструктор, который можно вызвать с параметром типа int. Этот конструктор создаёт объект возвращаемый из оператора *.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы