这两个构造函数调用之间的区别

bvk*_*256 1 c++ constructor

可能重复:
类型名称后的括号是否与new有所不同?

我相信这个问题已经被问到了,但我找不到快速搜索.

Foo ob* = new Foo; 

Foo ob* = new Foo();
Run Code Online (Sandbox Code Playgroud)

这两种在C++中创建对象的方法有区别吗?如果没有,那么其中一个被认为是不好的做法?每个编译器都会对它进行相同的处理吗?

Ker*_* SB 7

第一个是默认初始化,第二个是值初始化.如果Foo是类类型,则它们都调用默认构造函数.如果Foo是基础(例如typedef int Foo;),则默认初始化不执行初始化,而值初始化执行零初始化.

对于类类型和数组,初始化以预期的方式递归地进行到成员/元素.