#include <iostream>
#include <vector>
class Person{
public:
//使用初始化列表方式
Person(int id, int age):m_id(id),m_age(age){}
private:
int m_id;
int m_age;
};
// std::initializer_list允许构造函数或其他函数像参数一样使用初始化列表
struct Person1{
public:
// 用在对象构造函数
Person1(std::initializer_list<int> list)
{
for (std::initializer_list<int>::iterator iter = list.begin(); iter != list.end(); iter++)
{
m_vectors.push_back(*iter);
}
}
// 用在普通函数形参
void show_list_value(std::initializer_list<int> list)
{
for (auto it = list.begin(); it != list.end(); ++it)
{
std::cout<<*it<<std::endl;
}
}
std::vector<int> m_vectors;
};
void test1()
{
// 传统构造函数
Person p1(10, 20); // 构造函数对对象进行初始化
Person p2(p1); // 使用拷贝构造函数对对象进行初始化
}
void test2()
{
Person1 per = {1, 2, 3, 4, 5};// 对象构造
for (auto iter = per.m_vectors.begin(); iter != per.m_vectors.end(); iter++)
{
std::cout<<*iter<<std::endl;
}
per.show_list_value({1, 2, 3, 4, 5, 6});
}
int main()
{
test2();
return 0;
}
C++新特性初始化列表
最新推荐文章于 2024-05-13 20:55:40 发布
本文介绍了C++中如何使用初始化列表来构造对象,并展示了如何在构造函数和普通函数中利用std::initializer_list。通过示例代码,解释了如何在Person类和Person1结构体中应用初始化列表,以及它们在对象构造和显示列表值中的工作原理。
1337

被折叠的 条评论
为什么被折叠?



