new int{10}
new int(10)
有什么区别? {} 和 () ?
上面实例两处有同样的效果,申请 int 空间同时初始化。
其它地方还是有较多不同,比如在容器类初始化:
vector<int> v{5, 2}; // 容器有两个元素 5,2
vector<int> v(5, 2); // 容器有5个元素,值都为2
{} Uniform Initialization,B 站侯捷老师有简单视频讲解;
《Effective Modern C++》 对两处的不同和带来的影响做了深度分析。
我个人现在初始化以 () 为主,实在满足不了功能时用 {}, 像上面例子。
2 回答1.7k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
1 回答931 阅读
1 回答1.1k 阅读
2 回答1.1k 阅读
对于 char, int, double 等基础类型来说,这两种初始化的方法是等同的。
在 new 的对象是一个类的时候就有区别了,用(),如果没有构造函数会直接报错,用{}会直接按列表初始化来处理。如果有构造函数,这两种方式都可以正确的处理,{}也会去调用构造函数。所以C11之后,尽量用{}来做初始化构造。