自学内容网 自学内容网

条款7 区分使用( )和{ }

目录

一、{}的优势

二、{}简化聚合类的初始化

三、{}对C++令人头疼的解析问题天然免疫

四、array(是数组的更优选择)

五、容器支持列表初始化

一、{}的优势

struct A {
    A(int a){};         // 1
    A(const A &a){};    // 2
}

A a = 10;               // 1 + 2
A a(10);                // 1
A a = (10);             // 1 + 2

A a{10};                // 1
A a = {10};             // 1


struct B {
    B(int b, int c){};  // 1
    B(const B &b){};    // 2
}

B b = 10, 5;            // 错
B b(10, 5);             // 1
B b = (10, 5);          // 错

B b{10, 5};             // 1
B b = {10, 5};          // 1
B b = {10, 5.0};        // 错,不允许缩窄变换
  1. A a = 10;  问题1:只能接收一个参数;问题2:要额外执行一次拷贝有些类还不可拷贝
  2. A a(10); 问题: 被用作函数参数,或者返回值时,会执行拷贝
  3. A a{10} 优势:
    1. 简化聚合类的初始化
    2.  {} 可以完美解决上面的问题,同时不允许缩窄变换
    3.  {}对C++令人头疼的解析问题天然免疫

原文地址:https://blog.csdn.net/qq_40178082/article/details/142963479

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!