👦个人主页:@Weraphael
✍🏻作者简介:目前学习C++和算法
✈️专栏:C++航路
🐋 希望大家多多支持,咱一起进步!😁
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 📂 加关注✨
目录
一、统一的列表初始化
1.1{}初始化
在C++98
标准中,允许使用花括号{}
对数组或者结构体对象进行统一的列表初始值设定。比如:
但在C++11
中扩大了用花括号{}
括起的列表的使用范围,使其可用于所有的内置类型和类类型(一切皆可用{}初始化),而类可以使用花括号{}
初始化本质是在调用了默认构造函数初始化对象。
class MyClass
{
public:
MyClass(int a = 0, int b = 0)
:_a(a)
,_b(b)
{
cout << "调用了MyClass的默认构造函数" << endl;
}
int _a;
int _b;
};
int main()
{
int a = {
1 }; // 内置类型
cout << a << endl;
// 老式写法
MyClass c1(1, 2);
cout << c1._a << " " << c1._b << endl;
// C++11
MyClass c2 = {
1,2 }; // 类对象
cout << c2._a << " " << c2._b << endl;
return 0;
}
【程序结果】
从上看出,C++11
还支持多参数隐式类型转换。
当然了,C++11
还支持使用初始化列表时,可不添加赋值符号=
。
class MyClass
{
public:
MyClass(int a = 0