struct A
{
int i;
};
struct B
{
B(){}
int i;
}
大家好
我知道“POD 是指普通旧数据类型,根据定义它不能有用户定义的构造函数”。 但是我不明白为什么这个规则在“definition have an user-defined default-con”时有效。
它们的内存布局没有区别,为什么A型是POD,B型不是?
最佳答案
原因很简单。一旦你定义了一个构造函数(任何 构造函数),该语言假定该类需要一些 某种初始化;只是复制其图像中的位 不足以创建新实例。其中之一 POD 的一个重要特征是它们可以被 memcpy。
总而言之,编译器不查看类的内容 确定它是否是 POD(除了查看是否有任何 成员是 PODS)。它会查看您是否定义了任何内容 可能影响初始化、赋值或 销毁这些成员。
关于c++ - 如何理解这个 POD 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17694819/