如何在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/