C++ 浅谈POD类型
POD类型是C++11中的一个新特性,用来描述类或者结构体的属性。
全称是 Plain OLD Data, Plain表示普通的,没有使用面向对象的那些特性, OLD表示与C兼容,为什么说与C兼容,意思是与C语言一样的内存布局。
关于POD类型都有哪些约束条件,这里不多赘述,网上一大堆,简而言之,个人感觉就是没有使用面向对象思想的类/结构体。
POD类型主要有两个独立的特性,平凡类型(trivial)和平凡布局类型(standard-layout)
查看一个类是否是POD类型
#include <iostream>
#include <type_traits>
class A {
public:
int a;
int b;
};
int main() {
std::cout << std::is_trivial<A>::value << std::endl; //查看是否为trivial
std::cout << std::is_standard_layout<A>::value<< std::endl; //查看是否为standard_layout
std::cout << std::is_pod<A>::value << std::endl;
return 0;
}
POD 类型的优点
- 因为没有引入面向对象的那些特性,所以可以通过字节复制,比较高效,可以使用memset memcpy去初始化。
- 兼容C语言类型的内存布局, 可以与其他语言进行交互