c++通过RAII思想实现go的defer

        RAII是想是c++之父提出的一种自动管理生命周期的思想,使用局部变量来管理动态分配的内容,它充分的利用了C++语言局部对象自动销毁的特性来控制资源的生命周期。

        go语言中的defer就是这种实现,提前定义一个函数,当作用域结束的时候自动执行,今天我们就来实现这个小功能

// 通过RAII思想实现go的Defer
class Defer {
public:
	Defer(const std::function<void()>&& fun) : task(std::move(fun)) {}
	~Defer() {
		task();
	}

private:
	std::function<void()> task;
};

        上面的功能就实现了最基本的defer功能,在构造时确定函数,析构时执行我们给它的函数,下面测试代码

#include"defer.hpp"

int main() {
    Defer d([] {std::cout << "11 11"; });
    std::cout << "55";

    return 0;
}

        输出是5511 11完美实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值