C++11 初始化列表初始化结构体时,不同数据类型怎么搞得
时间: 2024-09-27 21:05:42 浏览: 31
浅析C++中结构体的定义、初始化和引用
5星 · 资源好评率100%
在C++11及以后的版本中,你可以使用初始化列表来初始化结构体或类的对象。这允许你在创建新实例时指定每个成员变量的初始值。对于不同类型的数据,语法大致如下:
1. 对于基本类型(如整数、浮点数、字符等),直接写数值即可:
```cpp
struct MyStruct {
int value1;
double value2;
};
MyStruct obj = {42, 3.14}; // 整型和双精度浮点数
```
2. 对于引用类型,需要引用其他已存在的变量:
```cpp
int someVar = 5;
MyStruct objRef = {someVar, 0.0}; // 引用整数
```
3. 对于常量,可以直接写出其名字,不需要赋值:
```cpp
const char* strConst = "Hello";
MyStruct constStrObj = {strConst, 0.0}; // 常量指针
```
4. 对于复合类型(如数组、向量、map等),可以使用数组初始化的方式:
```cpp
std::vector<int> vec = {1, 2, 3};
MyStruct vecObj = {vec, 0.0}; // 向量类型的成员
```
5. 对于自定义类或结构,可以初始化成员的构造函数:
```cpp
class MyClass {
public:
MyClass(int a, std::string s) : myInt(a), myString(s) {}
// ...
private:
int myInt;
std::string myString;
};
MyClass customClass = {10, "Custom"};
```
请注意,初始化列表适用于简单情况,复杂的构造过程可能需要通过构造函数体完成。
阅读全文