У меня есть класс фракции следующим образом.Лучше ли перегружать оператор добавления как функцию, не являющуюся членом?
class Fraction
{
int num, den ;
public:
//member functions here
} ;
я прочитал в какой-то книге, я думаю, что "Эффективное использование C++, что лучше перегрузить оператор сложения, как, не функции члена. Приведенная здесь причина заключалась в том, что она допускает коммутативное дополнение. Это прототип моей перегруженной функции для оператора сложения.
Fraction operator + (const Fraction &obj, const int add_int) ;
Здесь, когда я его называю, я должен сделать это так.
f1 + 2 ;
Но это не сработает.
2 + f1 ;
Для этого мне пришлось бы снова написать функцию и изменить порядок параметров в этом.
Я хочу знать, есть ли способ, с помощью которого я могу перегрузить функцию за один раз и выполнить коммутативное дополнение?
У вас не может быть одной функции, которая будет поддерживать обе формы. Вам нужно будет обеспечить перегрузку автономных функций. 'Фракционный оператор + (const Fraction & obj, const int add_int);' и 'Fraction operator + (const int add_int, const Fraction &obj) ;' и это правильный путь для этого. –
Есть ли неявное преобразование из 'int' до 'Fraction'? Если это так, это может быть сделано, если это не так. –
Вы слегка ошибочно используете эффективный C++. Он фактически заявляет« Объявлять не-членные функции, когда преобразования типов должны применяться ко всем параметрам ». –