Скажем, у меня есть класс как таковой
class foo
{
public:
char* operator+ () //unary operator - prefix before instance
{
return "SomeChar";
}
};
Теперь я могу использовать его как таковой
foo d;
std::cout << +d; //unary operator used as prefix allowed
Теперь, если бы я хотел использовать унарный оператор в качестве постфикса, то в соответствии с эта страница
Как видите, в данном случае мы используем int как фиктивный аргумент для post-fix, когда переопределяем функции для перегруженных операторов унарного приращения (++) и декремента (--). Вы должны помнить, что int — это не целое число, а просто фиктивный аргумент. Вы можете рассматривать это как сигнал компилятору создать постфиксную нотацию оператора.
Я использую + вместо ++, так как оба являются унарными операторами.
Я мог бы сделать следующее
class foo
{
public:
char* operator+ () //unary operator - prefix before instance
{
return "SomeChar";
}
//Added this for postfix unary operation
char* operator+ (int) //unary operator - postfix before instance
{
return "SomeChar";
}
};
Однако это (постфикс) не работает
foo d;
std::cout << (d+) ; //unary operator used as post fix ERROR (Expected an expression)
Любые предложения/комментарии по этому вопросу?