C++11特性(右值引用 智能指针)

本文介绍了C++11中的auto和decltype关键字用于自动推导类型,nullptr替代NULL处理空指针,final和override用于控制继承和重载。此外,右值引用和智能指针(unique_ptr和shared_ptr)展示了高效内存管理和移动语义的重要性。
摘要由CSDN通过智能技术生成

1、auto/decltype关键字

auto:编译器在编译时自动推导变量类型

auto i = 10; // 10是int型,可以自动推导出i是int类型

decltype: 编译器在编译时自动推导表达式类型

int& i = 1;
decltype(i) a = 2; // a是 int& 类型

2、nullptr

nullptr是c++11用来表示空指针新引入的常量值,如果表示空指针语义时建议使用nullptr而不要使用NULL,因为NULL本质上是个int型的0,并不是个指针。

3、final、override关键字

c++11关于继承新增了两个关键字,final用于修饰一个类,表示禁止该类进一步派生和虚函数的进一步重载,override用于修饰派生类中的成员函数,标明该函数重写了基类函数,如果一个函数声明了override但父类却没有这个虚函数,编译报错,使用override关键字可以避免开发者在重写基类函数时无意产生的错误。

4、右值引用

左值:有名字并且可以取地址;

右值:没有有名字并且不能取地址;

右值引用必须初始化,且只能采用右值进行初始化。

int&& i = 1;  //右值引用方法 &&

右值引用通过移动构造函数和引动赋值运算符来实现移动语义,允许将资源的所有权转移;避免深拷贝中不必要的构造;解决浅拷贝中面向对内存重复释放内存的问题。

5、智能指针

本质上是一个类模板,对指针进行封装,用来动态管理内存,防止内存泄漏。

        3.1 unique_ptr(独占式智能指针): 只能拥有一个指向某个对象的指针,在生命周期结束时释放所持对象的内存。不支持拷贝和赋值操作,但支持移动语义。

        3.2 shared_ptr(共享式智能指针): 可以共享同一个对象的所有权,可以通过引用计数来管理内存。当最后一个共享式智能指针被销毁时,它会自动释放所持有的对象内存。支持拷贝和赋值操作,通过引用计数来实现内存的安全管理。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值