Мы знаем, что компилятор различает перегрузку префиксных и постфиксных операторов (инкремент и декремент) в С++ с фиктивным параметром.
давайте рассмотрим следующие примеры перегрузки оператора инкремента.
class Chocolate
{
private: int countChocolate;
public: Chocolate()
{
countChocolate = 0;
}
public: Chocolate& operator++()
{
++countChocolate;
return *this;
}
public: Chocolate operator++(int)
{
Chocolate temp(countChocolate);
++(*this);
return temp;
}
};
int main(int argc, char const *argv[])
{
Chocolate kitkat;
++kitkat; // this will call the prefix
kitkat++; // this will call the postfix
return 0;
}
Теперь мой вопрос заключается в том, как компилятор различает их с помощью фиктивного параметра.
как процедура дифференцирования происходит в компиляторе
потому что я не передаю какой-либо параметр ни в одном подходе, то как и почему он различает оба оператора
потому что в моем понимании
++kitkat и kitkat++ будут переведены на
киткат.оператор++();
so,
как это работает в компиляторе
может ли кто-нибудь рассказать мне это подробно
Мне просто интересно.