meduzaВ С++ нельзя перегружать "^". Но я "закачу глаза" и представлю, что можно
Как так нельзя? Не поверив своим глазам и чтя эксперимент как мерило истины, я набрал вот такую программку (прошу простить меня за немного необычный стиль):
Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>
class Real
{
public:
Real
(
const double& _real = 0
)
:
real(_real)
{
}
friend
Real operator ^
(
const Real& _r1,
const Real& _r2
)
{
return pow(_r1.real, _r2.real);
}
friend
bool operator <
(
const Real& _r1,
const Real& _r2
)
{
return _r1.real < _r2.real;
}
protected:
double real;
};
void main(void)
{
Real n = 3;
int i;
for (i = 0; i < (2^n); i++)
{
//...
}
getch();
}
...которая успешно откомпилировалась (и запустилась не менее успешно). Так что насчет "нельзя" это вопрос спорный... По крайней мере в наших широтах - можно.
Закатывать же глаза я предлагал именно на необходимость скобочек
(2^n
) в данном примере (без них вся затея с треском разваливается).
БодигримВообще-то никто не говорил, что это Си...
Действительно, очень напоминает Action Script.