原文:(原创)用c++11实现简洁的ScopeGuard

ScopeGuard的作用是确保资源面对异常时总能被成功释放,就算没有正常返回。惯用法让我们在构造函数里获取资源,当因为异常或者正常作用域结束,那么在析构函数里释放资源。总是能释放资源。如果没有异常抛出则正常结束,只是有异常发生或者没有正常退出时释放资源。关于ScopeGaurd的概念想多了解一点的童鞋点这里和这里。c 中的ScopeGuard比较简单,通过using初始化或者通过finally ...

2013-11-13 14:20 7 3621 推荐指数:

查看详情

C++11/14的新特性——更简洁

新的字符串表示方式——原生字符串(Raw String Literals)   C/C++中提供了字符串,字符串的转义序列,给输出带来了很多不变,如果需要原生义的时候,需要反转义,比较麻烦。  C++提供了,原生字符串,即字符串中无转义,亦无需再反义。详细规则见带码 ...

Tue Jul 10 03:42:00 CST 2018 0 5281
delegate委托的C++实现--C++11/14(原创)

熟悉C#的人都清楚delegate,也清楚委托的作用。 实现观察者模式,在C++中的一种做法就是通过接口继承来实现,这无疑大大增加了耦合度。通过delegate变可以解除这种耦合。 下面是上班时间,偷偷实现的一个我的delegate。直接上码: 以下 ...

Fri May 16 06:59:00 CST 2014 0 3285
基于C++11的线程池(threadpool),简洁且可以带任意多的参数

咳咳。C++11 加入了线程库,从此告别了标准库不支持并发的历史。然而 c++ 对于多线程的支持还是比较低级,稍微高级一点的用法都需要自己去实现,譬如线程池、信号量等。线程池(thread pool)这个东西,在面试上多次被问到,一般的回答都是:“管理一个任务队列,一个线程队列,然后每次取一个 ...

Tue Feb 14 23:54:00 CST 2017 15 50014
c++11 闭包的实现

c++11 闭包的实现 什么是闭包 闭包有很多种定义,一种说法是,闭包是带有上下文的函数。说白了,就是有状态的函数。更直接一些,不就是个类吗?换了个名字而已。 一个函数,带上了一个状态,就变成了闭包了。那什么叫 “带上状态” 呢? 意思是这个闭包有属于自己的变量,这些个变量的值是创建闭包 ...

Mon Nov 06 03:11:00 CST 2017 1 7894
c++11 tuple实现

实现一个简易版的c++11 tuple。 我使用的编译器是gcc,codeblocks13.12自带的,哪个版本我不熟gcc也没去查。 大致看了下他家的tuple实现,多继承,tuple之上还有2个辅助类,走的是类似loki中GenScatterHierarchy的路子。1092行代码,不是盖 ...

Sat Mar 01 13:17:00 CST 2014 8 4096
(原创)c++11改进我们的模式之改进代理模式,实现通用的AOP框架

c++11 boost技术交流群:296561497,欢迎大家来交流技术。 本次要讲的时候如何改进代理模式,具体来说是动态代理模式,动态代理模式一般实现AOP框架,不懂AOP的童鞋看这里。我前面的博文也实现了一个AOP框架(可以参考我前面的博文:(原创C++ 轻量级AOP框架 ...

Tue Jun 25 18:09:00 CST 2013 8 2214
原创)用c++11打造好用的any

  上一篇博文用c++11实现了variant,有童鞋说何不把any也实现一把,我正有此意,它的兄弟variant已经实现了,any也顺便打包实现了吧。其实boost.any已经挺好了,就是转换异常时,看不到详情,和boost.variant一样的问题。实现any比实现variant要简单,需要 ...

Wed Nov 13 03:21:00 CST 2013 1 9370
原创C++11改进我们的程序之简化我们的程序(二)

  这次要讲的是:C++11如何通过组合函数来简化我们的程序。关于组合函数,大家可能对这个概念有点陌生。组合函数是将N个一元函数组成一种更复杂的函数,每个函数的返回值作为参数传给下一个函数,直到传到最后一个函数结束。这种组合函数的能力可以使我们以一种更直观的方式去完成复杂的链式执行行为。例如有三个 ...

Sat Aug 31 05:14:00 CST 2013 2 2399
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM