条款7 区分使用( )和{ }
目录
一、{}的优势
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}; // 错,不允许缩窄变换
- A a = 10; 问题1:只能接收一个参数;问题2:要额外执行一次拷贝有些类还不可拷贝
- A a(10); 问题: 被用作函数参数,或者返回值时,会执行拷贝
- A a{10} 优势:
- 简化聚合类的初始化
- {} 可以完美解决上面的问题,同时不允许缩窄变换
- {}对C++令人头疼的解析问题天然免疫
原文地址:https://blog.csdn.net/qq_40178082/article/details/142963479
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!