使用Plain Old Data (POD) structs\classes in C++
工作时
发布于 2011-10-15 18:45:05
如果您有一个非常小的对象,确保这些对象是POD可以是一个巨大的优势。
您可以使用大量的constructors.
缺点是,您必须保持头脑灵活,以便处理代码中的非OOP荚。POD是旧风格C代码的后盾,在这种代码中,您了解并关心数据的布局。当布局定义良好时,您可以通过工作内存块来优化,而不是使用大量的小块。
请注意,我以上所描述的适用于琐碎的布局结构。换句话说,如果在该类型上调用type _trait的std::is_trivially_copyable(),则会得到真。实际上,对POD的要求甚至比普通可复制结构的要求还要高。所以,我刚才描述的,适用于所有的豆荚,甚至一些非豆荚,它们碰巧是可观察的。
发布于 2010-12-24 09:00:04
POD与常量结合有一个优点。
如果您声明/定义一个常量,并且对其使用POD类型,则整个POD被放入可执行文件/库的(常数)数据部分,并在加载后可用。
如果使用非POD,则构造函数必须运行才能初始化它。由于在C++中运行静态类的构造函数的顺序是未定义的,所以不能从静态B的构造函数或从静态B的构造函数中调用的任何代码访问静态A。
所以在这种情况下使用豆荚是安全的。
发布于 2010-12-24 08:06:21
POD可以在C接口中使用,这意味着您可以用C++编写库,但是可以使用C接口编写库,这样就更有利了。
缺点是您不能使用构造函数将初始化的负担放在类型本身上--用户代码必须处理这个问题。
https://stackoverflow.com/questions/4524931
复制相似问题