以下两个初始化有什么区别?使用和不使用圆括号的C++类初始化
class Pod {
public:
int a, b;
};
Pod *p1 = new Pod;
Pod *p2 = new Pod();
以下两个初始化有什么区别?使用和不使用圆括号的C++类初始化
class Pod {
public:
int a, b;
};
Pod *p1 = new Pod;
Pod *p2 = new Pod();
在第一种情况的目的是左未初始化,而在第二种情况下,对象被保证是值初始化,这意味着在这种情况下为类型是POD 零初始化
虽然区别在于在“int”情况下基本不存在,在第一种情况下,成员是默认初始化的而不是未初始化的。 – 2013-03-17 02:22:47
@JerryCoffin:是的,我应该更清楚,这部分也是由于它是一个POD,因为它*默认初始化*意味着该对象*保持未初始化* – 2013-03-17 02:39:04
@DavidRodríguez-dribeas:...但在C++ 11中,它不限于POD类型(IIRC,它应该适用于所有可复制类型的更广泛的类别)。 – 2013-03-17 02:57:14
正如JamesMcLaughlin所说,没有什么区别,并且不仅限于POD。 – MFH 2013-03-17 02:16:42
@DavidRodríguez-dribeas如何? – 2013-03-17 02:17:27
@JamesMcLaughlin:阅读标准中的第8.5节:) – 2013-03-17 02:18:02