4

我能找到的所有描述都在类的上下文中谈论“指向成员的指针”。工会与结构非常相似,特别是也有成员。你也能指点那些成员吗?

例如

union x {
    int a;
    float b;
};
int x::*p = &x::a;

我不是在谈论指向整个联合的指针,作为联合成员的指针等。p在上面的示例中,它确实是一个偏移量,显然大小为 0。我需要这个构造来回答这个问题

4

1 回答 1

5

§3.9.2/1:复合类型可以通过以下方式构造:……指向非静态 50 个类成员的指针,它们标识给定类的对象中给定类型的成员,

§8.3.3/1:在声明 TD 中,其中 D 具有形式……并且嵌套名称说明符表示一个类,……</p>

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

当然还有第 9.5/5 节:联合是使用类键定义的类union……</p>

(§3.9.2/1 还提到:unions,它们是类……)

没有提到类不能是联合,所以是的,你可以形成这样的 PTM 类型和值。

于 2013-01-17T09:43:03.977 回答