c++ - C++ 中的引用类型是 POD 类型吗?

标签 c++

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/

相关文章:

c++ - C/C++ 高效sock反向代理

c++ - 如何检测计算机是否正在关闭以保存 session

c++ - 凹面 GL_POLYGON 不着色?

C++ 链表迭代成员访问运算符

c++ - 访问声明只能应用于基类成员

c++ - 未在此范围内声明的变量 - Mingw w64

c++ - vector::clear:内存问题

c++ - 使用 QRegexp 从 Qt 中的字符串中删除 xml header

c++ - 对象创建必须使用哪种设计模式?

c++ - 智能指针列表 - 管理对象生命周期和指针有效性