问答

c++的 new int{10} 和 new int(10) 有什么区别?

作者:admin 2021-04-22 我要评论

new int{10} new int(10) 有什么区别? {} 和 () ? ### 对于 char, int, double 等基础类型来说,这两种初始化的方法是等同的。 class A{public: int a; // A(int...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

new int{10}
new int(10)

有什么区别? {} 和 () ?

###

对于 char, int, double 等基础类型来说,这两种初始化的方法是等同的。

class A
{
public:
    int a;
    // A(int _a) { a = _a; }
}

A* a1 = new A(10);
A* a2 = new A{10}

在 new 的对象是一个类的时候就有区别了,用(),如果没有构造函数会直接报错,用{}会直接按列表初始化来处理。如果有构造函数,这两种方式都可以正确的处理,{}也会去调用构造函数。所以C11之后,尽量用{}来做初始化构造。

###

上面实例两处有同样的效果,申请 int 空间同时初始化。

其它地方还是有较多不同,比如在容器类初始化:
vector<int> v{5, 2}; // 容器有两个元素 5,2
vector<int> v(5, 2); // 容器有5个元素,值都为2

{} Uniform Initialization,B 站侯捷老师有简单视频讲解;
《Effective Modern C++》 对两处的不同和带来的影响做了深度分析。

我个人现在初始化以 () 为主,实在满足不了功能时用 {}, 像上面例子。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 求助!Mysql workbench connections出

    求助!Mysql workbench connections出

  • c++ 的dll 转golang可以调用

    c++ 的dll 转golang可以调用

  • c++的 new int{10}  和 new int(10) 有

    c++的 new int{10} 和 new int(10) 有

  • Grafana MySQL为数据源时, 折线图无法

    Grafana MySQL为数据源时, 折线图无法

腾讯云代理商
海外云服务器