C++11 初始化构造对象
时间: 2023-11-30 20:03:10 浏览: 89
在 C++11 中,有几种初始化构造对象的新方法。
首先是列表初始化,使用大括号 `{}` 来初始化对象。这种方法可以用于数组、结构体和类,而且可以防止隐式类型转换和截断。例如:
```c++
int arr[] = {1, 2, 3};
std::vector<int> vec = {4, 5, 6};
std::string str{"hello"};
```
其次是委托构造函数,这是一个构造函数调用另一个构造函数来完成对象的初始化。这种方法可以减少代码重复,提高代码的可维护性。例如:
```c++
class MyClass {
public:
MyClass() : MyClass(0) {}
MyClass(int i) : m_i(i) {}
private:
int m_i;
};
```
接下来是默认初始化,使用 `=` 或 `{}` 来初始化对象。这种方法可以确保对象被初始化为默认值。例如:
```c++
int i{}; // 0
std::string str{}; // ""
```
最后是初始化列表,使用大括号 `{}` 来初始化类的成员变量。这种方法可以在类的构造函数中初始化成员变量。例如:
```c++
class MyClass {
public:
MyClass(int i, std::string str) : m_i{i}, m_str{str} {}
private:
int m_i;
std::string m_str;
};
```
以上是 C++11 中的一些初始化构造对象的新方法,可以使代码更加简洁和易读。
阅读全文