可能重复:
类型名称后的括号是否与new有所不同?
我相信这个问题已经被问到了,但我找不到快速搜索.
Foo ob* = new Foo;
Foo ob* = new Foo();
Run Code Online (Sandbox Code Playgroud)
这两种在C++中创建对象的方法有区别吗?如果没有,那么其中一个被认为是不好的做法?每个编译器都会对它进行相同的处理吗?
第一个是默认初始化,第二个是值初始化.如果Foo是类类型,则它们都调用默认构造函数.如果Foo是基础(例如typedef int Foo;),则默认初始化不执行初始化,而值初始化执行零初始化.
对于类类型和数组,初始化以预期的方式递归地进行到成员/元素.