c++11新特性

本文详细介绍了C++11的新特性,包括左值和右值引用、std::move和std::forward的移动语义、lambda表达式、变参模板、别名、tuple、constexpr函数、统一初始化、nullptr以及static_assert静态断言。这些特性增强了C++的灵活性和效率。
摘要由CSDN通过智能技术生成

---------------------c+11------------------------

-------------------------------------------------

1.左值和右值

左值是表达式结束后依然存在的持久对象(代表一个在内存中占有确定位置的对象)

左值引用的基本语法:type &引用名 = 左值表达式;

右值是表达式结束时不再存在的临时对象(不在内存中占有确定位置的表达式)

右值引用的基本语法type &&引用名 = 右值表达式;

便携方法:对表达式取地址,如果能,则为左值,否则为右值

2.std::move函数(移动语义)

std::move作用主要可以将一个左值转换成右值引用,从而可以调用C++11右值引用的拷贝构造函数(浅拷贝,避免深拷贝)

std::move应该是针对你的对象中有在堆上分配内存这种情况而设置的


 

3.std::forward函数(完美转发)

C++完美转发是指一种能够传递函数参数或对象的同样类型(例如左值或右值属性)和cv限定符(const或volatile)的方式,

同时保留原参数的准确数值类别和cv限定符的转发机制。

完美转发通过使用引用折叠机制和std::forward函数来实现。

所有的折叠引用最终都代表一个引用,要么是左值引用,要么是右值引用。

规则是:如果任一引用为左值引用,则结果为左值引用。否则(即两个都是右值引用),结果才是右值引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值