C++新特性
文章平均质量分 84
逐渐更新C++新特性
haozhuan04
这个作者很懒,什么都没留下…
展开
-
C++新特性(三)
lambda表达式1. Lambda表达式基础基本语法[捕获列表](参数列表) mutable(可选) 异常属性 ->返回值类型{ //函数体}Lambda表达式以一对中括号开始。有参数列表有函数体,return语句一般不需要说明返回值,相当于auto,有特殊情况需要说明时,则应使用箭头语法的方式。每个Lambda表达式都有一个全局唯一的类型,要精确捕获lambda表达式到一个变量中,只能通过auto声明的方式。每个匿名函数多次被调用时,会维持上一个值。...原创 2022-03-09 14:04:35 · 155 阅读 · 0 评论 -
C++新特性(四)- auto_ptr
智能指针在传统C++中,我们用new和delete去对资源进行申请和释放,而C++11引入了智能指针的概念,使用了引用计数的概念,让程序员不再需要关心手动释放内存。RAII: Resource Acquisition Is initialization智能指针的行为类似常规指针,重要的区别是它负责自动释放所指向的对象。...原创 2022-03-11 11:58:14 · 1235 阅读 · 0 评论 -
C++新特性(一)
参考资料:https://zh.cppreference.com/w/cpp1. nullptr与NULL慎重NULL,NULL其实是一个0的宏定义,本质是int型的0,不具备指针类型。nullptr表示空指针,本质也是0但是具备指针类型,但是并不具体到哪种类型的指针。2. constexprconstexpr 说明符声明编译时可以对函数或变量求值值。这些变量和函数(给定了合适的函数实参的情况下)即可用于需要编译期常量表达式的地方。2. 迭代器及类型推导迭代器STL中存在一些常见的已经封装原创 2022-03-02 18:20:26 · 243 阅读 · 0 评论 -
C++新特性(五)- unique_ptr
unique_ptrunique_ptr,是用于取代c++98的auto_ptr的产物.在c++11当中有了移动语义,使用move()给unique_ptr传入函数,这样你就知道原先的unique_ptr已经失效了,但是对于move之后使用原来的内容是未定义行为,系统并非抛出异常,所以还是要人为遵守规则.unique_ptr对数组类型有偏特化重载,并且还做了相应的优化,比如用[]访问相应元素等.unique_ptr 是一个独享所有权的智能指针,它提供了严格意义上的所有权,包括:1、拥有它指向的对象2原创 2022-03-11 11:58:45 · 3025 阅读 · 0 评论 -
C++新特性(六)- shared_ptr
shared_ptrshared_ptr 使用计数机制来表明资源被几个指针共享。可以通过成员函数use_count()来查看资源的所有者个数。除了可以通过new来构造,还可以通过传入auto_ptr, unique_ptr,weak_ptr来构造。当我们调用release()时,当前指针会释放资源所有权,引用计数减一。当引用计数等于0时,资源会被释放。shared_ptr和unique_ptr都支持的操作://空智能指针shared_ptr sp;unique_ptr up;p //将p作原创 2022-03-14 14:46:24 · 1154 阅读 · 0 评论 -
C++新特性(七)- weak_ptr
weak_ptrweak_ptr是用来解决shared_ptr交叉引用时的死锁问题,如果说两个shared_ptr相互引用,那么这两个指针的引用计数永远不可能下降为0,资源永远不会释放。它是对对象的一种弱引用,不会增加对象的引用计数,和shared_ptr之间可以相互转化,shared_ptr可以直接赋值给它,它可以通过调用lock函数来获得shared_ptr。交叉引用模型见上一篇 C++新特性(六)- shared_ptr如果把类A或者类B其中一个改为weak_ptr就可以了,我们把类A里面的sh原创 2022-03-14 16:24:34 · 1732 阅读 · 0 评论 -
C++新特性(二)
强制类型转换:原创 2022-03-03 17:55:26 · 373 阅读 · 0 评论