[cpp] 使用 shared_ptr的自定义删除函数模拟 go 语言的 defer 功能

Posted adream307

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[cpp] 使用 shared_ptr的自定义删除函数模拟 go 语言的 defer 功能相关的知识,希望对你有一定的参考价值。

go 语言的 defer 定义函数退出时的行为,c++shared_ptr 可以自定义deleter 函数明确变量在析构时的行为,因此可以用来模拟 go 语言中的 defer 行为

#include <memory>
#include <iostream>

int main()

    int x = 5;
    std::shared_ptr<int> tx(nullptr,[&](int *)std::cout << "defer x = " << x << std::endl;);
    std::cout << "main x = " << x << std::endl;
    return 0;

程序输出

main x = 5
defer x = 5

以上是关于[cpp] 使用 shared_ptr的自定义删除函数模拟 go 语言的 defer 功能的主要内容,如果未能解决你的问题,请参考以下文章

boost: 使用自定义删除器序列化 shared_ptr

带有自定义删除器和分配器的 shared_ptr

使用 CMake 的自定义 .h 和 cpp 的未定义符号 [关闭]

设计模式 工厂模式 使用shared_ptr

c_cpp count_ptr / shared_ptr

c_cpp shared_ptr用法与地图中的引用计数