C++Primer第五版中的c++11特性归纳(五)

本文介绍了C++11的一些关键特性,包括动态分配数组的列表初始化、allocator的使用、拷贝控制成员的默认设定、右值引用的应用、移动构造函数和赋值等,帮助读者理解C++11的新功能。
摘要由CSDN通过智能技术生成


四十一、auto不能用于分配数组

虽然我们用空括号对数组中的元素进行值初始化,但不能在括号中给出初始化器,这意味着不能用auto分配数组。


四十二、动态分配数组的列表初始化

在新标准中,我们可以提供一个元素初始化器的花括号列表:
//10个int分别用列表中对应的初始化器初始化
int *pia = new int[10]{0,1,2,3,4,5,6,7,8,9};
//10个string,前4个用给定的初始化器初始化,剩余的进行值初始化
string *pia3 = new string[10]{"a", "an", "the", string(3,'x')};

与内置数组对象的列表初始化一样,初始化器会用来初始化动态数组中开始部分的元素。如果初始化器数目小于元素数目,剩余元素将进行值初始化。如果初始化器数目大于元素数目,则new表达式失败,不会分配任何内存。


四十三、allocator分配未构造的内存

allocator分配的内存是未构造的(unconstructed)。我们按需要在此内存中构造对象。在新标准中,construct成员函数接受一个指针和零个或多个额外参数,在给定位置构造一个元素。额外参数用来初始化构造的对象。类似make_shared的参数,这些额外参数必须是与构造的对象的类型相匹配的回合肥的初始化器:
auto q = p;	//q指向最后构造的元素之后的位置
alloc.construct(q++);			//*q为空字符串
alloc.consturct(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值