Интересно, что операция умножения (*) перегружается указателем или наоборот?Перегрузка оператора C++ - указатель, умножить
Или операторы являются индивидуальными?
C++
Интересно, что операция умножения (*) перегружается указателем или наоборот?Перегрузка оператора C++ - указатель, умножить
Или операторы являются индивидуальными?
C++
Это работает точно так же, как и все символы оператора, может определить унарные или бинарный оператор (+
, -
и &
являются остальными), это зависит от количества аргументов функции будет принимать , Таким образом, a унарный *
должен быть определен для принятия одного оператора либо как нестатический класс класса , не принимающий никаких аргументов (кроме this
), либо как свободная функция , принимающая один аргумент. Бинарный оператор должен быть , определенный для принятия двух аргументов, либо как нестатический член класса , принимающий один аргумент (в дополнение к this
), либо свободную функцию, принимающую два аргумента.
Обратите внимание, что имена функций считаются одинаковыми, поэтому двоичная версия может скрыть унарный, или наоборот.
Они являются отдельными операторами, и которые один перегрузке зависит от того, какие параметры вы передадите к оператору.
struct A
{
//dereference operator
A /*or whatever*/ operator *() { /*...*/ };
//multiply operator
A operator *(const A&) { /*...*/ };
};
//...
A a;
*a; //calls dereference operator
a * a; //calls multiply operator