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

  • Автор темы Автор темы alc99vol
  • Дата начала Дата начала
A

alc99vol

Привет всем,

читал Страуструпа, и немного запутался, помогите, пожалуйста:

для класса, где операторы определяются как встроенные функции-члены:
class X{
...
X operator& (X); //-бинарный оператор &
X operator++(int); //унарный постфиксный ++
...
}
1) чем тогда будет X operator+(double); //что-то мне подсказывает, что бинарный +, или не?
2) и как определить бинарный оператор с типом int? (если X operator@(int); - это унарный постфиксный оператор?)

З.Ы.:а может под вечер я зря читаю Страуструпа, устал и задаю дурацкие вопросы - простите если так:)
 
1. Бинарный.
2. Так же как и с типом double. (Нельзя использовать символ @ в качестве оператора.)
 
1. @ - это имелось в виду любой произвольный оператор, не какой-то конкретный.
2. в том то и вопрос, ведь "так же как и с типом double" - получится унарный постфиксный оператор, т.к. : "Для любого
постфиксного унарного оператора @ выражение аа@ интерпретируется либо как
аа.operator@(int), либо как operator@ (aa, int). " - Страуструпп.
И получается что(@-любой допустимый опрератор):
class X{
...
X operator@(double); //бинарный оператор @
X operator@(int); // унарный постфиксный оператор @ ?
...
}
 
ага, сегодня я проспался и погуглил получше, вот тут вот есть ответ:


lazybiz: все равно спасибо за ответ.
 
Что-то ты меня запутал...
Вот смотри:
C++:
#include <iostream>

using namespace std;

class A {
public:
double	v;

A operator + ( int a ) {
A	r;
r.v = v + a;
return r;
}

A operator + ( double a ) {
A	r;
r.v = v + a;
return r;
}

};

void main ()
{
A	a, b, c, d;

c.v = 10;
d.v = 1;

a = c + 1;		// бинарная операция
b = d + .5;		// бинарная операция

cout << "a.v = " << a.v << endl;
cout << "b.v = " << b.v << endl;
}
 

 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!