在C++11下,如果'Test‘是一个普通类,那么以下两个类之间是否有区别:
Test* test = new Test;
//and
Test* test = new Test();
注意:这是Do the parentheses after the type name make a difference with new?再次提出的相同问题,因为旧线程位于C++11之前,而我想问一下c++11 stadard下是否存在差异。
这个问题的公认答案是:
据我所知,C++11只有2个初始化、默认值和值。所以我想答案有点不同?
发布于 2014-12-30 02:16:43
C++11具有零初始化、默认初始化、值初始化(相应地是8.5/5、/6和/7 )、复制初始化(8.5/14)、直接初始化(8.5/15)和列表初始化(E 110
8.5.4E 211
)。
特别是关于new
:
5.3.4/15创建类型为
T
的对象的新表达式初始化该对象如下: -如果省略新的初始化器,则该对象为默认初始化(8.5);如果不执行初始化,则该对象具有不确定的值。 -否则,将根据8.5的初始化规则解释新的初始化程序,以进行直接初始化.
https://stackoverflow.com/questions/27698364
复制相似问题