我们知道,编译器在c ++中使用伪参数来区分前缀和后缀运算符重载(递增和递减)。
让我们考虑以下增量运算符重载示例。
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 ++都将翻译为
kitkat.operator ++();
所以
它如何在编译器中深入工作
谁能详细告诉我
我很好奇。