Uniform initialization和初始化列表的区别
时间: 2023-05-31 09:03:23 浏览: 160
C++ Initialization Story
Uniform initialization(统一初始化)是C++11引入的一种初始化方式,使用花括号{}来初始化变量或对象。例如:
```
int x{42};
std::string str{"hello"};
```
初始化列表是在构造函数中使用冒号:后跟花括号{}来初始化成员变量。例如:
```
class Foo {
public:
Foo(int x, std::string str) : x_{x}, str_{str} {}
private:
int x_;
std::string str_;
};
Foo foo{42, "hello"};
```
它们的区别在于,uniform initialization可以用于任何类型的变量或对象的初始化,而初始化列表只能用于类的构造函数中初始化成员变量。此外,uniform initialization会优先选择列表初始化,只有当列表初始化不可用时才会考虑其他形式的初始化。
阅读全文