Оператор перегрузки `: =` в C ++ - PullRequest
0 голосов
/ 15 марта 2012

Почему я не могу создать или перегрузить оператор := в моем классе на C ++?

Есть ли некоторые операторы списка, которые я могу перегрузить?

Я могу только перегрузить илитакже создать несколько новых пользовательских операторов?

Ответы [ 2 ]

11 голосов
/ 15 марта 2012

Потому что в C ++ такого оператора не существует.Вы не можете свернуть свои собственные операторы, потому что вам нужно изменить грамматику языка, чтобы синтаксический анализатор распознал их.

Список доступных операторов можно найти здесь или здесь (или еще лучше, читая стандарт, если вы можете получить копию).

Наконец, имейте в виду, что перегрузка операторов, таких как завтра, - это ошибка, которую делает почти каждый начинающий C ++;операторы на самом деле являются не чем иным, как функциями, и если в большинстве случаев не будет очень веских оснований для перегрузки оператора, лучше вместо этого написать простую функцию для вашего класса.Например, std::string не не имеет operator*, хотя можно утверждать, что удобно писать

string sleepy = string("z") * 40;
1 голос
/ 15 марта 2012

Операторы, которые вы можете перегрузить: enter image description here

Возможно, вы имели в виду назначение или оператор равенства.

class Object{

public:

    ///Overload The Assignment Operator
    Object& operator=(const Object& objectIn);

    ///Overload The Equals Operator
    bool operator == (const Object & rhs) const;

protected:
private:
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...