如何区分C++中两个相似的运算符重载
how to distinguish among two similar operator overloading in C++
我有这段 C++ 代码来重载预增量和 post-增量运算符。
这些方法之间的唯一区别是它们的参数数量。
我想知道 C++ 如何理解在 运行 y=++x 和 z=x++ 命令时应该调用哪个方法(预增量或 post-增量)。
class location {
private: int longitude, latitude;
public:
location(int lg = 0, int lt = 0) { longitude = lg; latitude = lt; }
void show() { cout << longitude << "," << latitude << endl; }
location operator++(); // pre-increment
location operator++(int); // post-increment
};
// pre-increment
location location::operator++() { // z = ++x;
longitude++;
latitude++;
return *this;
}
// post-increment
location location::operator++(int) { // z = x++;
location temp = *this;
longitude++;
latitude++;
return temp;
}
int main() {
location x(10, 20), y, z;
cout << "x = ";
x.show();
++x;
cout << "(++x) -> x = ";
x.show();
y = ++x;
cout << "(y = ++x) -> y = ";
y.show();
cout << "(y = ++x) -> x = ";
x.show();
z = x++;
cout << "(z = x++) -> z = ";
z.show();
cout << "(z = x++) -> x = ";
x.show();
}
本质上缺少 ++ 重载中的参数告诉 c++ 您正在创建前缀重载。
包含该参数会告诉 c++ 您正在重载后缀运算符。因此,当您 运行 ++x 时,它将 运行 前缀,而 x++ 将 运行 后缀。
我还可以补充一点,参数中的 int 不是整数数据类型。
如果您想了解更多,那么这是我找到信息的地方:https://www.programiz.com/cpp-programming/increment-decrement-operator-overloading
我有这段 C++ 代码来重载预增量和 post-增量运算符。 这些方法之间的唯一区别是它们的参数数量。
我想知道 C++ 如何理解在 运行 y=++x 和 z=x++ 命令时应该调用哪个方法(预增量或 post-增量)。
class location {
private: int longitude, latitude;
public:
location(int lg = 0, int lt = 0) { longitude = lg; latitude = lt; }
void show() { cout << longitude << "," << latitude << endl; }
location operator++(); // pre-increment
location operator++(int); // post-increment
};
// pre-increment
location location::operator++() { // z = ++x;
longitude++;
latitude++;
return *this;
}
// post-increment
location location::operator++(int) { // z = x++;
location temp = *this;
longitude++;
latitude++;
return temp;
}
int main() {
location x(10, 20), y, z;
cout << "x = ";
x.show();
++x;
cout << "(++x) -> x = ";
x.show();
y = ++x;
cout << "(y = ++x) -> y = ";
y.show();
cout << "(y = ++x) -> x = ";
x.show();
z = x++;
cout << "(z = x++) -> z = ";
z.show();
cout << "(z = x++) -> x = ";
x.show();
}
本质上缺少 ++ 重载中的参数告诉 c++ 您正在创建前缀重载。
包含该参数会告诉 c++ 您正在重载后缀运算符。因此,当您 运行 ++x 时,它将 运行 前缀,而 x++ 将 运行 后缀。
我还可以补充一点,参数中的 int 不是整数数据类型。
如果您想了解更多,那么这是我找到信息的地方:https://www.programiz.com/cpp-programming/increment-decrement-operator-overloading