gpt4 book ai didi

c++ - 了解在STL映射中使用的运算符重载 'const'语法

转载 作者:行者123 更新时间:2023-12-02 09:48:14 27 4
gpt4 key购买 nike

我试图了解operator <的运算符重载的语法,其中第二个const词使编译器感到满意。

bool operator < (const point& rhs) const {  // what's the rationale for the second const word here?
以这个 struct为例
struct point {
int x;
int y;

point () : x(0), y(0) {}
point (int _x, int _y) : x(_x), y(_y) {}

point operator + (const point& rhs) {
return point(this->x + rhs.x, this->y + rhs.y);
}
bool operator < (const point& rhs) const {
return this->x < rhs.x;
}
};
这将允许我将其用作mymap的键。
map<point,int> mymap;

最佳答案

方法声明末尾的外部const告诉编译器该方法的*this对象为conststd::map将其键存储为const值。因此,应用于键的任何运算符都需要标记为const,否则它们将无法编译。 std::map默认情况下使用operator<对其键进行排序并比较它们是否相等。
此外,作为一种好的做法,任何不修改*this内容的成员方法/运算符都应始终标记为const。这样做使用户知道这些操作是只读的,并让编译器在const对象的表达式中使用它们。

关于c++ - 了解在STL映射中使用的运算符重载 'const'语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63103499/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com