1
所有非静态数据成员具有相同的访问控制
#include <iostream>
struct KO
{
int a;
private:
int b;
};
struct OK
{
void Foo() { a = 42; }
private:
void Bar() { a = 43; }
int a;
};
int main() {
// your code goes here
std::cout << std::boolalpha;
std::cout << std::is_pod<KO>::value << std::endl;
std::cout << std::is_pod<OK>::value << std::endl;
return 0;
}
一个结构不是POD时数据成员具有不同的访问控制,但是没有提到关于功能成员的事情,尽管他们具有不同的访问权限,但他们实际上是POD控制。
这是为什么? C++结构体中的数据和函数访问控制有什么区别?
它赋予编译器编写者以不同的访问控制组织数据的自由。原来的理由是我无法告诉你 - 可能是非常具有历史意义的(回到C++基本上是c的预处理器的时代)。 –
PODness是关于布局,而不是访问。只有非静态数据成员参与布局。 (并且布局按访问级别进行分组,并在不同的访问级别进行不确定。) –