栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c11部分新特性

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c11部分新特性

一、c11部分新特性 智能指针 智能指针作用:

C++程序设计中使用堆内存是非常频繁的操作,使用普通指针容易造成内存泄漏、二次释放等问题。C++11中引入了智能指针的概念。智能指针就是帮我们C++程序员管理动态分配的内存的,它会帮助我们自动释放new出来的内存,从而避免内存泄漏
为什么智能指针可以像普通指针那样使用???
因为其里面重载了 * 和 -> 运算符, * 返回普通对象,而 -> 返回指针对象。

auto_ptr:

auto_ptr 是c++ 98定义的智能指针模板,可以将new 获得(直接或间接)的地址赋给这种对象。当对象过期时,其析构函数将使用delete 来释放内存!

auto_ptr 被C++11抛弃的主要原因:

a、复制或者赋值都会改变资源的所有权。
b、在STL容器中使用auto_ptr存在着重大风险,因为容器内的元素必须支持可复制和可赋值。

unique_ptr:

unique_ptr是auto_ptr的一个改良版,不能赋值也不能拷贝,保证一个对象同一时间只有一个智
能指针。

shared_ptr:

shared_ptr可以使得一个对象可以有多个智能指针,当这个对象所有的智能指针被销毁时就会自
动进行回收。(内部使用计数机制进行维护)

weak_ptr:

weak_ptr是为了协助shared_ptr而出现的,只可以从一个 shared_ptr 或另一个 weak_ptr 对象构造, 他的构造或者析构不会改变计数器,它不能访问对象,只能观测shared_ptr的引用计数,防止出现死锁。

右值引用

右值引用和左值引用的区别:
左值持久,右值短暂,左值引用绑定到有确定存储空间以及变量名的对象上,表达式结束后对象依然存在;右值引用绑定到要求转换的表达式、字面常量、返回右值的表达式等临时对象上,赋值表达式结束后就对象就会被销毁。

引入右值引用原因:
替代需要销毁对象的拷贝,提高效率

lambda表达式


1.捕获列表。在C ++规范中也称为Lambda导入器, 捕获列表总是出现在Lambda函数的开始处。
2.参数列表。与普通函数的参数列表一致。如果不需要参数传递,则可以连同括号“()”一起省略。
3.可变规格*。mutable修饰符, 默认情况下Lambda函数总是一个const函数,mutable可以取消其常量性。在使用该修饰符时,参数列表不可省略(即使参数为空)。*
4.异常说明。用于Lamdba表达式内部函数抛出异常。
5.返回类型。 追踪返回类型形式声明函数的返回类型。我们可以在不需要返回值(或者明确返回类型)的时候也可以连同符号”->”一起省略。
6. lambda函数体。内容与普通函数一样,不过除了可以使用参数之外,还可以使用所有捕获的变量。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011862.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号