C++11花落知多少

(一)讲一下右值引用

目的:

1)消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率

2)能够更简洁明确的定义泛型函数

链接:【C++】—— 如何跟面试官讲述什么是右值引用_chenxiyuehh的博客-CSDN博客_什么是右值引用

 

(二)智能指针

auto_ptr(已被弃用)、shared_ptr、weak_ptr、unique_ptr

【1】为什么要使用智能指针

智能指针的作用是管理一个指针,因为存在以下这种情况,申请的空间在函数结束时忘记释放,造成内存泄漏,使智能指针可以很大程度上的避免这个问题;因为智能指针就是一个类,当超出了类的作用域,类会自动调用析构函数,析构函数会自动释放资源;

 智能指针主要用于管理在堆上分配的内存,它将普通的指针封装为一个栈对象。 当栈对象的生存周期结束后,会在析构函数中释放掉申请的内存, 从而防止内存泄漏。

auto_ptr:

1)已弃用,auto_ptr存在内存崩溃的问题,因为采用的是对象所有权模式,用auto_ptr进行资源转移,不能共享对象的所有权;

2)被赋值或者拷贝后,失去对原指针的管理;

3)不能管理数组指针,因为auto_ptr的内部实现中,析构函数中删除对象使用的是delete而不是delete[], 释放内存时仅释放了数组的第一个元素的空间,会造成内存泄漏;

4)不能作为容器对象,因为STL容器中的元素经常要支持拷贝、赋值等操作;

unique_ptr:

1)是auto_ptr的优化版本,严格意义上的独享所有权,采用了对象所有权模式,保证同一时间只能有一个智能指针指向该对象;

2)拷贝构造和赋值运算符被禁,不能进行拷贝构造和赋值运算;

share_ptr:

1)shared_ptr:多个指针可以共享相同对象,该对象及资源会在最后一个引用被销毁时释放

2)但是如果有两个shared_ptr相互引用,那么这两个引用计数永远不为0,资源不被释放;

weak_ptr:

1)weak_ptr:解决shared_ptr相互引用时,产生死锁的问题,计数永远降不到0,没办法进行资源释放,造成内存泄漏问题。

(三)nullptr

nullptr可以转换成其它任意的指针类型;

(四)auto

1)类型说明符:分析表达式所属的类型

2)auto必须要确定初始值,因为是通过初始值来判断它所属的类型

(五)decltype

1)用于从表达式的类型推断出定义的变量类型

decltype(i)// 使用的是一个不加括号的变量,那么会得到的结果就是这个变量的类型

decltype((i))  // 给变量加上一层或多层括号,会将这个变量当做表达式看

(五)lambda

(六)final

1)禁止继承,加上final的类称为最终类,此类不能被继承

class Person final {}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值