首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++:POD \Cons

C++:POD \Cons
EN

Stack Overflow用户
提问于 2010-12-24 07:38:30
回答 4查看 2.7K关注 0票数 12

使用Plain Old Data (POD) structs\classes in C++

  • In的
  • 有哪些优点和缺点?在使用序列化框架时,人们应该更喜欢使用它们而不是non-PODs?
  • Specifically,do PODs?可能在跨平台和cross-language?

工作时

EN

回答 4

Stack Overflow用户

发布于 2011-10-15 18:45:05

如果您有一个非常小的对象,确保这些对象是POD可以是一个巨大的优势。

您可以使用大量的constructors.

  • For ()或malloc(),节省对持久性的大量调用,而不是一次只流出一个对象,您可以使用fwrite()和fread()来提高速度。

缺点是,您必须保持头脑灵活,以便处理代码中的非OOP荚。POD是旧风格C代码的后盾,在这种代码中,您了解并关心数据的布局。当布局定义良好时,您可以通过工作内存块来优化,而不是使用大量的小块。

请注意,我以上所描述的适用于琐碎的布局结构。换句话说,如果在该类型上调用type _trait的std::is_trivially_copyable(),则会得到真。实际上,对POD的要求甚至比普通可复制结构的要求还要高。所以,我刚才描述的,适用于所有的豆荚,甚至一些非豆荚,它们碰巧是可观察的。

票数 7
EN

Stack Overflow用户

发布于 2010-12-24 09:00:04

POD与常量结合有一个优点。

如果您声明/定义一个常量,并且对其使用POD类型,则整个POD被放入可执行文件/库的(常数)数据部分,并在加载后可用。

如果使用非POD,则构造函数必须运行才能初始化它。由于在C++中运行静态类的构造函数的顺序是未定义的,所以不能从静态B的构造函数或从静态B的构造函数中调用的任何代码访问静态A。

所以在这种情况下使用豆荚是安全的。

票数 6
EN

Stack Overflow用户

发布于 2010-12-24 08:06:21

POD可以在C接口中使用,这意味着您可以用C++编写库,但是可以使用C接口编写库,这样就更有利了。

缺点是您不能使用构造函数将初始化的负担放在类型本身上--用户代码必须处理这个问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4524931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档