C++高效用法1-序章

05/06/2020

移动语义

C++11最广泛接受的特性可能是移动语义。如何区分左右值尤为重要。

  • 返回值的临时对象是右值
  • 任何形参都是左值
  • 左值转换右值使用std::move

构造函数下的移动语义

  • 拷贝构造函数
  • 移动构造函数
void test(ClassType c);//普通函数

ClassType Name; //类

test(Name); //c是Name经由拷贝构造函数创建的副本
test(std::move(Name)); //移动构造函数
  • 实参可以是左值也可能是右值

lambda表达式

经由lambda表达式创建的函数对象称为闭包

声明与定义

声明的作用引入名字和型别,而不给出细节,如存储位置或具体实现

extern int x;

class Widget;

bool test(int a);

enum class Color; //限定作用域的枚举声明

定义同时也可以当声明用,所以,除非某些场合非给出定义不可,我倾向于只使用声明

Effective Modern C++ 主要体现在型别推导上面,如何在模板中高效使用auto和decltype,同时对C++11新特性进行分析,如智能指针,移动语义和lambda表达式等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值