如何在C++ 11中初始化POD(普通旧数据)的成员变量?

class A {
public:
    int theAnswer; // this is not initialized
};

static_assert(std::is_pod<A>::value, "A must be a plain old object");

class B {
public:
    int theAnswer { 42 }; //  this should initialize to 42
};

static_assert(std::is_pod<B>::value, "B must be a plain old object"); // ERROR

class C {
public:
    C() : theAnswer { 42 } { } // Obviously, this is not a trivial default constructor, so it does not work
    int theAnswer;
};

static_assert(std::is_pod<C>::value, "C must be a plain old object"); // ERROR

最佳答案

您可以在初始化整个对象的地方进行操作。一个普通的旧数据对象就是这样:普通的旧数据,没有不变性,初始化或任何花哨的东西。如果要初始化,则不是POD。

但是也许您实际上并不需要POD。也许简单地复制就足够了吗?如果您要做的只是对象之间的内存,那么可复制的就是您要寻找的特征,而不是POD。

关于c++ 11普通旧对象的默认值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26754024/

10-12 23:35