在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个初始化,默认值和值。所以我觉得答案有点不同?
答案 0 :(得分:1)
C ++ 11具有零初始化,默认初始化,值初始化( 8.5 / 5 , / 6 和 / 7 ,相应地),复制初始化( 8.5 / 14 ),直接初始化( 8.5 / 15 )和列表初始化( 8.5.4 ) )。
特别是new
:
5.3.4 / 15 创建类型为
T
的对象的 new-expression 按如下方式初始化该对象:- 如果省略 new-initializer ,则默认初始化对象(8.5);如果没有执行初始化,则该对象具有不确定的值。
- 否则, new-initializer 将根据8.5的初始化规则进行解释,以进行直接初始化。