cpp11的初始化列表
时间: 2023-10-16 19:31:56 浏览: 77
C++11引入了一些新的初始化列表语法,包括:
1. 列表初始化
使用花括号{}来初始化对象,称为列表初始化。
例如:
```
int arr[] = {1, 2, 3};
std::vector<int> vec = {4, 5, 6};
```
2. 委托构造函数
在构造函数中使用冒号初始化列表调用另一个构造函数,称为委托构造函数。
例如:
```
class A {
public:
A() : A(0) {}
A(int x) : m_x(x) {}
private:
int m_x;
};
```
3. 继承构造函数
使用using语句继承基类的构造函数,称为继承构造函数。
例如:
```
class A {
public:
A(int x) {}
};
class B : public A {
public:
using A::A;
};
```
4. 移动语义初始化
使用std::move将右值引用转为左值引用,称为移动语义初始化。
例如:
```
std::string str = "hello";
std::vector<std::string> vec;
vec.push_back(std::move(str));
```
5. 初始化列表中的默认值
使用等号=来指定初始化列表中的默认值,称为默认初始化列表。
例如:
```
class A {
public:
A(int x, int y = 0) : m_x(x), m_y(y) {}
private:
int m_x;
int m_y;
};
```
阅读全文