美文网首页
Plain Old Data类型

Plain Old Data类型

作者: yangxingpping | 来源:发表于2015-06-30 23:50 被阅读0次

    1

    c++中将POD分为两个概念集(1,trival 平凡的) + (2,standard layout标准布局)

    1,trival

     1)trival constructor and destructor (do nothing...)   trival copy constructor, trival move constructor, trival assignment operator, trival move operator;2)不能包含虚函数和虚基类。可以使用c++11 template<typename T> struct std::is_trival来对类型是否为trival进行判断。

    以上函数使用编译器默认的实现的话就有trival属性,如果自己写的实现的话需要在后面添加=default来重新把它声明为trival.例如下面代码

    struct Demo{int m; Demo(int x):m(x){}  Demo()=default;} 用is_trival<Demo>::value返回1.

    2,stand layout

    1),所有非静态成员具有相同的访问权限(private...);2)类中第一个非静态成员的类型与基类不同

    3)类有继承时:两个条件或操作为真则为真。

    ---)派生类中有非静态成员,且只有一个仅包含静态成员的基类

    ---)基类有非静态成员,而派生类没有非静态成员。

    4)没有虚函数和虚基类

    5)所有非静态数据成员均符合标准布局类型,基类也符合。

    同样,stand layout可以使用is_standard_layout<T>::value进行判断。


    相关文章

      网友评论

          本文标题:Plain Old Data类型

          本文链接:https://www.haomeiwen.com/subject/mvaeqttx.html