c++ 11新特性
cncoderwang
这个作者很懒,什么都没留下…
展开
-
c++11新特性之auto
在早期版本中,auto关键字用来声明具有自动存储器的局部变量,auto关键字很少被使用,除了静态变量之外,其它的变量默认是auto的。因此,在c++11中,删除了原有的功能,并对其重新设计,增加了auto的类型推导功能。template <class T1, class T2>double Add( T1 a, T2 b){ auto ret = a + b; return re原创 2018-03-18 16:25:50 · 537 阅读 · 0 评论 -
c++新特性之std::atomic
std::atomic为C++11封装的原子数据类型, 支持多种类型数据的原子操作,以下是atomic支持的数据类型,摘自http://www.cplusplus.com/reference/atomic/。 #include <atomic>#include <thread>#include <list>std::atomic_int g_iCount = 100;void threadf原创 2018-03-18 20:58:39 · 18269 阅读 · 6 评论 -
c++11新特性之条件变量
std::condition_variable 是为了解决死锁而生的。当互斥操作不够用而引入的。比如,线程可能需要等待某个条件为真才能继续执行,而一个忙等待循环中可能会导致所有其他线程都无法进入临界区使得条件为真时,就会发生死锁。所以,condition_variable实例被创建出现主要就是用于唤醒等待线程从而避免死锁。std::condition_variable的 notify_one()用于原创 2018-03-18 21:35:29 · 1220 阅读 · 0 评论 -
C++11新特性之智能指针
本文章参考https://www.cnblogs.com/feng-sc/p/5710724.html#title33。因为其对智能指针介绍的比较详细,在自己的工作中,智能指针用的少,都是new delete用的多,实际开发中,不少情况下会出现内存泄漏的问题,都是因为只有new 没有delete导致的。智能指针为我们解决了资源管理的问题,让我们不再担心资源泄漏的问题。但是智能指针难道就不会存在资源泄原创 2018-03-18 22:25:01 · 217 阅读 · 0 评论 -
C++11 NULL与nullptr
C++11增加了nullptr空指针,以前我们常用NULL代表空指针,但是会存在问题,大家都知道NULL其实是一个宏定义,大多数是被定义成0。通过以下代码可以看出NULL和nullptr的区别。struct Work{ void DoWork(int obj) { cout << "DoWork 1" << endl; } void DoWork(int * ...原创 2018-03-23 13:54:42 · 330 阅读 · 0 评论 -
C++11 bind function
C++11标准中的std::bind和std::function是从boost中移植过来的。实践证明,还是相当好用的,同时它们可以和lamda表达式一起用。下面我们想想这样一个问题,比如我有一个类,这个类里面有一个求加法的成员函数,但是我不想在类里面实现,想交由外部实现,那么该采取什么样的策略呢 ?此时,我们通常会想到用函数指针。看下面程序。int addGlobalFun(int _a, int...原创 2018-03-23 15:13:29 · 503 阅读 · 0 评论 -
C++11 lamda表达式
lamda表达式可以被认为是一个匿名的函数,之前不明白为什么C++11中会加入这个特性?匿名的函数能带来什么好处?有名的函数只不过增加了一些函数调用开销而已,无伤大雅。下面开始走进lamda函数的世界。基本的Lamda函数int main(int argc, char** argv){ auto addfun = [](int _a, int _b)->int { return _...原创 2018-03-23 16:32:34 · 543 阅读 · 0 评论