gpt4 book ai didi

c++ - 我什么时候应该使用 const 呢?

转载 作者:可可西里 更新时间:2023-11-01 17:56:46 25 4
gpt4 key购买 nike

我找到了一些这样的代码:

class foo{
int a;
public:
foo(int v) : a{v} {}
bool operator==(const foo& rhs) const&{
return (rhs.a == a);
}
};

它编译并运行。

我想知道在运算符 == 中引用 (&) 有什么好处(或缺点)。

最佳答案

作为 T.C.已经在评论中指出,这个原因不是“只接受左值”。 const 引用可以很好地绑定(bind)到右值。

原因是只有当所有重载都指定一个值类别时,函数才能在隐式对象参数的值类别上重载。也就是说,当您添加仅匹配右值的 && 重载时,除非您将 & 添加到现有重载,否则它不会编译。

在 13.1 中,规则的措辞如下:

Member function declarations with the same name and the same parameter-type-list as well as member function template declarations with the same name, the same parameter-type-list, and the same template parameter lists cannot be overloaded if any of them, but not all, have a ref-qualifier.

并举例说明

class  Y
{
void h() &;
void h() const &; // OK
void h() &&; // OK, all declarations have a ref-qualifier
void i() &;
void i() const; // ill-formed, prior declaration of i
// has a ref-qualifier
};

关于c++ - 我什么时候应该使用 const 呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29056718/

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