C++11新标准之二:初始化列表

C++11引入了一个新的初始化方式,称为初始化列表(List Initialize),具体的初始化方式如下:

int i = {1};
int j{3};

初始化列表在使用的时候有如下一些要求:

1. 当初始化内置基本类型的时候,列表初始化不允许出现隐式类型的转换,例如:

long double ld = 3.1415926536;
int a{ld}, b = {ld}; //出错,不允许出现精度的丢失
int c(ld), d = ld; // 非列表初始化,但是会出现精度的丢失

2. 初始化列表可以用于初始化结构体类型,例如:

#include <iostream>

struct Person
{
  std::string name;
  int age;
};

int main()
{
	Person p = {"Frank", 25};
	std::cout << p.name << " : " << p.age << std::endl;
}

3. 其他一些不方便初始化的地方使用,比如std<vector>的初始化,如果不使用这种方式,只能用构造函数来初始化,难以达到效果:

	std::vector<int> ivec1(3, 5);
	std::vector<int> ivec2 = {5, 5, 5};
	std::vector<int> ivec3 = {1,2,3,4,5}; //不使用列表初始化用构造函数难以实现




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值