• C++11:初始化列表


    在老版本的C++中,我们可以比较方便得对结构体、数组等对象利用{}进行初始化,而类变量的初始化则取决于构造函数的形式,例如:

    struct A {
    	int a, b, c;
    };
    
    class Foo
    {
    public:
    	Foo(int n)
    	{}
    
    };
    
    int main()
    {
    	int number[5] = { 1,2,3,4,5 };
    	std::vector<int> v = { 1,2,3,4 };
    	A a = { 0,0,0 };
    	Foo f(0);
    	return 0;
    }
    

    我们如果想对类对象也采用类似{}的方式进行方便的初始化,可以利用C++11所提供的新的类型:std::initializer_list,允许构造函数或其他函数像参数一样使用初始化列表,这位类对象的初始化和普通数组和结构体的初始化方法提供了统一的桥梁:

    class Foo
    {
    public:
    	Foo(std::initializer_list<int> nums)
    	{
    		for (auto it = nums.begin(); it != nums.end(); it++)
    		{
    
    		}
    	}
    
    };
    
    int main()
    {
            //Foo f {1,2,3,4,5}; 这样写也是可以的
            Foo f = {1,2,3,4,5};
    	return 0;
    }
    

    其实这个特性不只是可以用在对象构造上,还能将其作为普通函数的形参:

    void foo(std::initializer_list<int> v)
    {
    
    }
    
    int main()
    {
    	foo({ 6,6,6 });
    	return 0;
    }
    

    这样写起来,是不是觉得方便了很多呢?

  • 相关阅读:
    db2新添用户
    merge的用法
    oracle常用命令
    oracle建用户
    获得当前时间的PRO
    全部快捷方式图标变成LNK文件怎么办
    随机生成数据的三种方法
    db2查看表空间
    db2疑难解决
    AVG()和to_date()函数的使用
  • 原文地址:https://www.cnblogs.com/wickedpriest/p/14532919.html
Copyright © 2020-2023  润新知