&Type::variable是什么意思?

3
int main()
{
    struct Bob
    {
        int a;
    };

    &Bob::a;
}

&Bob::a是什么意思?Bob是一种类型而不是实例,所以它要取地址的是什么?


1
它创建了一个类型为Bob的成员指针a - Mateusz Grzejek
关键在于 & 不是应用于 Bob,而是整个 Bob::a 名称。 - Lightness Races in Orbit
@LightnessRacesinOrbit 但是如果尝试使用括号 &(Bob::a),它不起作用。 - AlexD
@AlexD:不确定我理解你的观点。但是OP认为这是[pseudocode] (&Bob)::a,所以他无法弄清楚发生了什么。 - Lightness Races in Orbit
@LightnessRacesinOrbit,您的评论是&适用于整个内容,即Bob::a。为了明确起见,可以尝试在周围放置括号。但是&(Bob::a)将无法工作。 - AlexD
显示剩余3条评论
1个回答

2
这是一个指向类成员的指针。根据标准(N4296,5.3.1):
一元运算符&的结果是其操作数的指针。操作数必须是lvalue或限定符id。如果操作数是命名为非静态或变量成员m的限定符id,其中某些类C具有类型T,则结果具有类型“指向类C的成员类型T的指针”,并且是表示C :: m的prvalue。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接