这两个构造函数调用之间的区别
Difference between these two constructor calls
可能重复:
类型名称后面的括号与new有区别吗?
我相信这个问题已经被问过了,但我无法通过快速搜索找到它。
Foo ob* = new Foo;
Foo ob* = new Foo();
这两种在C++中创建对象的方法有区别吗?如果没有,那么其中一种是否被认为是一种不良做法?每个编译器都一视同仁吗?
第一个是默认初始化,第二个是值初始化。如果Foo
是类类型,那么它们都会调用默认构造函数。如果Foo
是基本的(例如typedef int Foo;
(,则默认初始化不执行初始化,而值初始化执行零初始化。
对于类类型和数组,初始化以预期的方式递归地进行到成员/元素。
没有区别,只是如果Foo
是内置类型,则前者不会对其进行值初始化。
因此:
new int; // unspecified value
new int(); // 0
这与内置程序的"正常"分配也很匹配:
int x; // unspecified value
int x = 0; // well, you can't do `int x()`, but, if you could...
相关文章:
- C++ 类的构造函数和函数调用运算符 () 重载之间的歧义
- 静态模板类成员函数的这两个调用之间有什么区别?
- C++:cout 和函数调用之间的计算顺序
- 如何在函数调用之间存储 deque 值
- 如何在c/c++中使函数调用之间的变量值持久化
- 连接线程(阻塞调用线程直到线程终止)和普通函数调用之间的区别是什么
- 函数调用中 * 和 & 运算符之间的区别
- 函数调用中char[]和char*之间的差异
- C++测量函数调用和回调之间的时间
- 链式静态函数调用之间的参数求值顺序
- 类之间没有匹配的函数调用
- 如何在c++ dll中实例化一个类,使它在函数调用之间保持内存
- 我可以在函数调用之间在c++ DLL中维护内存吗?
- 带和不带()的构造函数调用之间的区别
- 这两个构造函数调用之间的区别
- 在c++中,使用指针的两个函数调用之间的区别是什么?
- 本机和托管c++之间的函数调用(方法)
- 在返回对象的函数调用和对该对象的方法调用之间是否存在一个序列点
- 函数局部变量在函数调用之间保持不变
- C++函数调用之间更改数组内容