У меня вопрос по операторам, допустим у меня есть класс myclass и я перегрузил его операторы *=, [] и +
Могу ли я получить к ним доступ внутри функций-членов с помощью this->*=, this->[], *this + * this... ?
У меня вопрос по операторам, допустим у меня есть класс myclass и я перегрузил его операторы *=, [] и +
Могу ли я получить к ним доступ внутри функций-членов с помощью this->*=, this->[], *this + * this... ?
Да, вы можете получить к ним доступ несколькими способами. Вы могли бы, например, сделать это:
*this + something
Или альтернативно:
this->operator+(something)
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
Если вы не используете внешние операторы, это должно работать так: this->operator[](args)
для указателей есть специальный синтаксис, он выглядит так:
this->oprator[](0)
this->operator+(*this)