我正在学习 C++,我对 int 变量的初始化有点困惑。
此代码(包括注释)是 Nawaz 在本主题中的回答的复制/粘贴为什么 C++ 需要用户提供的默认构造函数来默认构造 const 对象?
struct POD
{
int i;
};
POD p1; //uninitialized - but don't worry we can assign some value later on!
p1.i = 10; //assign some value later on!
POD p2 = POD(); //initialized
对于 p2,我了解正在发生以下情况:
- 调用默认构造函数 POD() 来创建临时 POD 对象。构造函数不是用户定义的,所以它是隐式的。对于像 int 这样的内置类型,隐式默认构造函数什么都不做(不初始化)。因此我包含一些随机的东西。
- 调用复制构造函数以使用临时 POD 对象(其i仍未初始化)创建 p2。因此 p2 的 i 成员也不应该被初始化。
但是,评论说 p2 已初始化!欢迎任何解释。谢谢。