C++11 (1)

1.一切皆可用列表初始化(不是初始化列表)

列表初始化就是在对自定义类型或者内置类型进行初始化的时候,不适用"="号来赋值

比如:

这两种都是列表初始化的一种.

而这种则是涉及到隐式类型转换的列表初始化.

自定义类型的列表初始化都是由其自身的构造支持的

内置类型则是其本身就支持,比如数组等内置类型.

而容器如果想支持不固定的列表参数初始化,则会调用initializer_list来支持其进行不固定的初始化

v1的初始化是直接调用vector的构造进行初始化,而v2就是一种列表初始化,这种初始化就会调用vector的initializer_list ,来进行一种隐式类型转换,他中间会生成一个临时变量来进行初始化

2.左值和右值

左值(可以被取地址的值),右值(不可以被取地址的值),但是左值和右值他并不是一个简单的值,而是一种表达式

1.左值

2.右值,右值引用

右值也是一个表述数据的表达式,如:字面常量,表达式返回值,函数返回值(这个不能是左值引用返回)等等,右值可以出现在赋值符号的右边,但是不能出现在赋值符号的左边,右值不能取地址,右值引用就是对右值的引用,给右值取别名

3.左值引用和右值引用

左值引用就是给左值取别名,这个很好理解

直接搞个引用就行了

而右值引用就是给右值取别名

既然左值引用就是给左值取别名,右值引用就是给右值取别名,那么左值引用能否给右值取别名?右值引用又能否给左值取别名?

从这里能看到,左值引用并不能给右值取别名,但是如果加上const,就可以实现左值引用给右值取别名了.

而相应的,右值引用也不能直接给左值取别名,但是如果给左值加上move,就可以取别名了.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值