gpt4 book ai didi

c++ - 为什么这不是 POD?

转载 作者:IT老高 更新时间:2023-10-28 12:53:59 26 4
gpt4 key购买 nike

这是关于 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
}

这 3 个结构在我看来都像 POD。但显然 struct B 不是。我不明白为什么。对我来说,它们都有一个微不足道的构造函数、移动和复制运算符。析构函数当然也是微不足道的。

我将其归咎于使用 2 个访问说明符,但我找不到有关此的信息。

最佳答案

根据标准(9 Classes [class],强调我的):

A standard-layout class is a class that:

...

has the same access control (Clause 11) for all non-static data members,

...

A POD struct is a non-union class that is both a trivial class and a standard-layout class, and ...

你的预感是正确的,因为 B.m1B.m2 都是非静态的并且具有不同的访问控制。

关于c++ - 为什么这不是 POD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29930982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com