2012-06-11 2 views

ответ

3

Это работает точно так же, как и все символы оператора, может определить унарные или бинарный оператор (+, - и & являются остальными), это зависит от количества аргументов функции будет принимать , Таким образом, a унарный * должен быть определен для принятия одного оператора либо как нестатический класс класса , не принимающий никаких аргументов (кроме this), либо как свободная функция , принимающая один аргумент. Бинарный оператор должен быть , определенный для принятия двух аргументов, либо как нестатический член класса , принимающий один аргумент (в дополнение к this), либо свободную функцию, принимающую два аргумента.

Обратите внимание, что имена функций считаются одинаковыми, поэтому двоичная версия может скрыть унарный, или наоборот.

10

Они являются отдельными операторами, и которые один перегрузке зависит от того, какие параметры вы передадите к оператору.

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 
Смежные вопросы