【问题标题】:What does &Type::variable mean? [duplicate]&Type::variable 是什么意思? [复制]
【发布时间】:2015-10-23 15:03:38
【问题描述】:
int main()
{
    struct Bob
    {
        int a;
    };

    &Bob::a;
}

&Bob::a 是什么意思? Bob 是一个类型而不是一个实例,那么它取了什么地址呢?

【问题讨论】:

  • 它创建一个pointer to member a 类型为Bob
  • 这里的关键是&应用于Bob,而是应用于整个Bob::a名称。
  • @LightnessRacesinOrbit 但是,如果尝试使用括号&(Bob::a),它就不起作用。
  • @AlexD:不确定我明白你的意思。我从来没有声称它会。但是 OP 认为这是 [伪代码] (&Bob)::a,这就是为什么他无法弄清楚发生了什么。
  • @LightnessRacesinOrbit 你的评论是& 适用于整个事情,适用于Bob::a。为了清楚起见,可以尝试在周围加上括号。但是&(Bob::a) 不起作用。

标签: c++


【解决方案1】:

它是一个指向类成员的指针。根据标准(N4296, 5.3.1):

一元& 运算符的结果是指向其操作数的指针。操作数应为左值或qualified-id。 如果操作数是一个 qualified-id 命名某个类 C 类型为 T 的非静态或变体成员 m, 结果的类型为“指向T 类型的C 类成员的指针”并且是指定C::m 的prvalue。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 2014-11-28
    相关资源
    最近更新 更多