通过默认c'tor进行C ++ pod初始化

时间:2010-11-24 06:03:42

标签: c++ standards

考虑一下这个POD:

struct T
{
   int i;
   char c;
};

在哪个C ++标准中,POD成员的要求是通过引入的默认c'tor初始化为零(或者从一开始就是在标准中)?

是的,这意味着没有用户指定的c'tor,'i'和'c'都将被初始化为0。 见http://msdn.microsoft.com/en-us/library/80ks028k%28VS.80%29.aspx

2 个答案:

答案 0 :(得分:5)

我不知道我是否理解你的问题。

  

这意味着没有用户指定的c'tor,'i'和'c'都将被初始化为0.

不一定。

例如:

T x; // `i` and `c` are uninitialized

T *ptr = new T; // `i` and `c` are uninitialized
T *pptr = new T(); //`i` and `c` are zero initialized as `T()` implies value initialization

T x(); // x is a function returning a type T and taking no arguments.

准确地说value initialization(C ++ 03 Section $ 8.5 / 5)是你正在寻找的东西。它是在C ++ 03中引入的。

答案 1 :(得分:5)

您所谈论的内容被恰当地称为“值初始化”。它是在C ++ 03中引入的(它是在§8.5/ 5中定义的,如果你想查看细节的话)。