C++11初始化结构体的几种方式
时间: 2024-09-27 07:05:11 浏览: 180
C++ 11新特性之大括号初始化详解
在C++11中,初始化结构体有几种常见的方法:
1. **成员初始化列表**:这是最常见的初始化方式,可以在声明结构体的同时指定每个成员变量的初始值。例如:
```cpp
struct Person {
std::string name;
int age;
};
Person p = { "Alice", 25 };
```
2. **默认构造函数**:如果没有提供初始化列表,那么成员将使用各自的默认构造函数进行初始化。如果所有成员都有默认构造函数,则可以简写为:
```cpp
Person p; // 使用默认构造函数
```
3. **析构函数初始化**:对于特殊的类型(如`std::unique_ptr`),C++允许在声明时直接传递给析构函数,以避免复制构造过程:
```cpp
std::unique_ptr<int> ptr{new int(42)}; // 直接创建并初始化
```
4. **空值初始化**:如果结构体没有成员,或者成员都可为空,可以使用`{}`来进行空值初始化:
```cpp
struct EmptyStruct {};
EmptyStruct s {}; // 空值初始化
```
5. **移动构造函数**:从C++11开始,移动构造函数可以用于高效地初始化结构体,当资源需要快速转移时特别有用。
阅读全文