О перегрузке операторов в C++

У меня вопрос по операторам, допустим у меня есть класс myclass и я перегрузил его операторы *=, [] и +

Могу ли я получить к ним доступ внутри функций-членов с помощью this->*=, this->[], *this + * this... ?


person user2370139    schedule 13.05.2013    source источник


Ответы (4)


Да, вы можете получить к ним доступ несколькими способами. Вы могли бы, например, сделать это:

*this + something

Или альтернативно:

this->operator+(something)
person Joseph Mansfield    schedule 13.05.2013

this - это просто указатель. Вы можете сделать все следующее с любым указателем.

Это предпочтительный способ, поскольку он не теряет операционный синтаксис:

(*this)[2]
(*this)(foo, bar)
*this / 3
*this * (that - 3) + 5

Это просто разыменование указателя.

Вы также можете использовать их имена:

this->operator[](2)
this->operator() (foo, bar)
this->operator/ (3)
this->operator*(that - 3) + 5
person Sebastian Mach    schedule 13.05.2013

Если вы не используете внешние операторы, это должно работать так: this->operator[](args)

person Jiwan    schedule 13.05.2013

для указателей есть специальный синтаксис, он выглядит так:

this->oprator[](0)

this->operator+(*this)

person 0x26res    schedule 13.05.2013