Определена операция вычитания для двух объектов класса A, а операция преобразования к int не определена. Что будет вызвано при:
Другие предметы Колледж Перегрузка операторов в C++ вычитание объектов класса A операция преобразования к int ошибки компиляции C++ основы программирования C++ колледж C++ Новый
Если у вас есть класс A, в котором определена операция вычитания, но не определена операция преобразования к int, то при выполнении операции вычитания между двумя объектами этого класса будет вызван именно оператор вычитания, который вы определили. Давайте рассмотрим, как это может быть реализовано и что происходит при выполнении такой операции.
Предположим, у вас есть следующий класс A:
class A { public: int value; A(int v) : value(v) {} // Определяем оператор вычитания A operator-(const A& other) const { return A(this->value - other.value); } };
В этом примере у нас есть класс A с одним полем value типа int. Мы определили оператор вычитания, который принимает другой объект класса A и возвращает новый объект A, содержащий разность значений полей value.
Теперь, если мы создадим два объекта класса A и выполним операцию вычитания:
A a1(10); A a2(4); A result = a1 - a2;
Что здесь происходит?
Таким образом, при выполнении операции вычитания между двумя объектами класса A, будет вызван именно ваш пользовательский оператор вычитания. Преобразование к int не используется, так как оно не определено и не требуется для выполнения этой операции.