c++ 中使用initializer_list初始化对象必须使用隐式转换码
时间: 2024-04-29 13:22:04 浏览: 124
构造函数与对象成员-c++教程谭浩强
不是必须使用隐式转换。在使用 initializer_list 初始化对象时,可以使用显式转换或者类定义的构造函数进行初始化。例如:
```c++
#include <initializer_list>
#include <iostream>
#include <string>
class MyVector {
public:
MyVector(std::initializer_list<int> list) {
for (auto i : list) {
values.push_back(i);
}
}
void print() {
for (auto v : values) {
std::cout << v << " ";
}
std::cout << std::endl;
}
private:
std::vector<int> values;
};
int main() {
MyVector v1{1, 2, 3}; // 使用 initializer_list 初始化对象
v1.print();
MyVector v2 = {4, 5, 6}; // 使用 initializer_list 初始化对象
v2.print();
MyVector v3 = std::initializer_list<int>{7, 8, 9}; // 使用显式转换初始化对象
v3.print();
MyVector v4(std::initializer_list<int>{10, 11, 12}); // 使用构造函数初始化对象
v4.print();
return 0;
}
```
在上面的例子中,我们使用 initializer_list 初始化了四个不同的 MyVector 对象,分别使用了隐式转换、显示转换和构造函数进行初始化。
阅读全文