C++11特性
文章平均质量分 70
C++11
LceChan
这个作者很懒,什么都没留下…
展开
-
C++11中=delete的巧妙用法
C++11中,当我们定义一个类的成员函数时,如果后面使用"=delete"去修饰,那么就表示这个函数被定义为deleted,也就意味着这个成员函数不能再被调用,否则就会出错。在C++11之前,当我们希望一个类不能被拷贝,就会把构造函数定义为private,但是在C++11里就不需要这样做了,只需要在构造函数后面加上=delete来修饰下就可以了。我们把参数类型是double的重载函数加上=delete进行修饰,表示这个函数被删除,那么用户就不能使用这个函数了,这样再编译就会出错,编译时直接报错,如下,原创 2022-09-11 15:10:48 · 2429 阅读 · 0 评论 -
C++ 智能指针最佳实践&源码分析
智能指针在 C++11 标准中被引入真正标准库(C++98 中引入的 auto_ptr 存在较多问题),但目前很多 C++开发者仍习惯用原生指针,视智能指针为洪水猛兽。但很多实际场景下,智能指针却是解决问题的神器,尤其是一些涉及多线程的场景下。本文将介绍智能指针可以解决的问题,用法及最佳实践。并且根据源码分析智能指针的实现原理。转载 2022-09-11 14:34:22 · 504 阅读 · 0 评论 -
C++11 的 std::ref 用法
上述代码在执行stdbind后,在函数f()中n1的值仍然是1,n2和n3改成了修改的值,说明stdbind使用的是参数的拷贝而不是引用,因此必须显示利用stdref来进行引用绑定。主要是考虑函数式编程(如stdbind)在使用时,是对参数直接拷贝,而不是引用。可以看到,和stdbind类似,多线程的stdthread也是必须显式通过stdref来绑定引用进行传参,否则,形参的引用声明是无效的。...转载 2022-07-31 15:17:02 · 302 阅读 · 0 评论 -
std::tuple大总结
C++11引入了一个新的较实用的模板类型,stdtuple,也即是元组。元组是一个固定大小的不同类型(异质,heterogeneous)值的集合,也即它可以同时存放不同类型的数据。类似于python中用小括号表示的元组类型。C++已有的stdpair类型类似于一个二元组,可看作是stdtuple的一个特例,stdtuple也可看作是stdpair的泛化。stdpair的长度限制为2,而stdtuple的元素个数为0~任意个。...转载 2022-07-31 15:05:52 · 763 阅读 · 0 评论 -
深入实践C++11智能指针
智能指针概念C/C++ 语言最为人所诟病的特性之一就是存在内存泄露问题,因此后来的大多数语言都提供了内置内存分配与释放功能,有的甚至干脆对语言的使用者屏蔽了内存指针这一概念。这里不置贬褒,手动分配内存与手动释放内存有利也有弊,自动分配内存和自动释放内存亦如此,这是两种不同的设计哲学。有人认为,内存如此重要的东西怎么能放心交给用户去管理呢?而另外一些人则认为,内存如此重要的东西怎么能放心交给系统去管理呢?在 C/C++ 语言中,内存泄露的问题一直困扰着广大的开发者,因此各类库和工具的一直在努力尝试各种方法去转载 2021-10-07 15:06:22 · 651 阅读 · 0 评论 -
c++智能指针及RAII机制的理解
一、为什么要有智能指针?因为在平时编程过程中,极大可能会出现两种情况;(1)malloc出来的空间,没有进行释放,存在内存泄漏;(2)如果在malloc和free之间抛异常,那么同样存在内存泄漏问题。该问题称为异常安全问题。使用智能指针可以解决跳出函数要频繁delete的问题,保证内存不泄漏,且通过析构函数来释放资源,使访问内存更加安全。二、智能指针原理及使用1、智能指针的实现是基于RAII(资源获取即初始化)。即对象在构造时获取资源,且在对象的声明周期内资源始终有效,最后在对象析构的时候转载 2021-10-03 23:35:13 · 296 阅读 · 0 评论 -
C++11 Lambda表达式(匿名函数)详解
使用STL时,往往会大量用到函数对象,为此要编写很多函数对象类。有的函数对象类只用来定义了一个对象,而且这个对象也只使用了一次,编写这样的函数对象类就有点浪费。而且,定义函数对象类的地方和使用函数对象的地方可能相隔较远,看到函数对象,想要查看其 operator() 成员函数到底是做什么的也会比较麻烦。对于只使用一次的函数对象类,能否直接在使用它的地方定义呢?Lambda 表达式能够解决这个问题。使用 Lambda 表达式可以减少程序中函数对象类的数量,使得程序更加优雅。Lambda 表达式的定义..转载 2021-10-02 15:16:40 · 239 阅读 · 0 评论