C++ 中的引用类型也是 POD 类型吗?
int&
是 POD 类型吗?那么
struct Q { int& i; }
谁能帮帮我?
最佳答案
没有。
设置引用某物的成员的唯一方法是通过用户声明的构造函数,因此,您的结构是非 POD。
更新:
答案仍然是否定的。
C++03 标准规定“POD 结构是一个聚合类,它没有非 POD 结构、非 POD union (或此类类型的数组)类型的非静态数据成员) 或引用,以及 ...”(C++03 标准第 9 节第 5 段)。
在 C++11 中,POD 结构“是一个既是普通类又是标准布局类的类,并且......”和标准布局类“< em>没有类型为非标准布局类(或此类类型的数组)或引用的非静态数据成员”(C++11 标准第 9 节第 6-9 段)。
我将那些以“或引用”结尾的短语解析为立即表示 POD 类不能包含任何引用类型的非静态数据成员。 “或引用”之前缺少逗号确实让位于其他解释(例如,它是对非 POD 类的引用,这使得引用变得糟糕,而不是引用本身),但是我坚持我的解释。
关于c++ - C++ 中的引用类型是 POD 类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19144007/