gpt4 book ai didi

c++ - 什么特殊规则适用于一元 & 运算符?

转载 作者:IT老高 更新时间:2023-10-28 21:53:11 25 4
gpt4 key购买 nike

是否有适用于一元 & 运算符的特殊规则?

例如代码:

#include <iostream>
struct X
{
X() {}
void* operator &() { return NULL; }
};
int main()
{
const X x;
std::cout << &x << std::endl;
X y;
std::cout << &y;
}

产生输出

0xbfbccb33
0

由于我之前在这里进行过讨论,我知道它会像这样编译和运行,但如果我不知道这一点,我会预料到它会编译失败,因为 operator & 未声明 const.

因此,无论 operator &() 是否重载,编译器都会生成 operator &() const。很好,这是有道理的,尤其是对于样本和输出。

问题是标准在哪里详细说明了这种行为?

我不是在寻找重复我在问题中已经说过的内容的答案,所以请不要解释我的重载运算符如何不能在 const 对象上调用,因为我已经知道了。

最佳答案

n3337 13.3.1.2/9

If the operator is the operator ,, the unary operator &, or the operator ->, and there are no viable functions,then the operator is assumed to be the built-in operator and interpreted according to Clause 5.

关于c++ - 什么特殊规则适用于一元 & 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13007244/

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