Xaq*_*aqq 26 c++ data-structures
这是关于std::is_pod,它检测模板是否是普通旧数据类型.
请参阅以下代码:
struct A {
public:
int m1;
int m2;
};
struct B {
public:
int m1;
private:
int m2;
};
struct C {
private:
int m1;
int m2;
};
int main()
{
std::cout << std::boolalpha;
std::cout << std::is_pod<A>::value << '\n'; // true
std::cout << std::is_pod<B>::value << '\n'; // false
std::cout << std::is_pod<C>::value << '\n'; // true
}
Run Code Online (Sandbox Code Playgroud)
这3个结构对我来说都像POD.但显然struct B不是.我不明白为什么.对我来说,他们都有一个简单的构造函数,移动和复制操作符.析构函数当然也是微不足道的.
我责备它使用2访问说明符,但我找不到有关此信息.
Ale*_*exD 31
根据标准(9级[类],强调我的):
一个标准布局类是一类:
...
- 对所有非静态数据成员具有相同的访问控制(第11条),
...
和
一个POD结构是一个非工会类既是平凡的类和标准的布局类,并...
你的预感是正确的,因为B.m1和B.m2都是非静态的,具有不同的访问控制.