c++ - 通过构造函数和析构函数实现 RAII 是否被认为是错误的 'Modern C++'?

标签 c++ c++11 raii

随着 C++ 中智能指针的出现,通过构造函数和析构函数手动实现 RAII 是否被认为是糟糕的“现代 C++”实践?或者是否有仍然相关的应用程序?

最佳答案

通过分配,内存不是唯一可以获取的资源,因此指针不是 RAII 的唯一类型。

例如,考虑一个作用域锁:

template <class Lockable>
class lock_guard {
    Lockable& lck;
public:
    lock_guard(Lockable& lck)
        : lck(lck)
    {
        lck.lock();
    }

    ~lock_guard()
    {
        lck.unlock()
    }
};

没有指针。还是RAII。仍然 Shiny 、现代且 super 有用。

关于c++ - 通过构造函数和析构函数实现 RAII 是否被认为是错误的 'Modern C++'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39261862/

相关文章:

reference - 当我用引用而不是拥有的值调用std::mem::drop时会发生什么?

c++ - 每个处理器具有不同计数值的 MPI_File_write_all

c++ - 如何存储英语词典?

c++ - 检查文本文件中的多条评论并打印出来

c++ - 改变 uniform_int_distribution 的范围

c++ - 如何在多个类中使用相同的 unique_ptr

c# - 在 C# 中实现 RAII

c++ - 为什么使用一个 vs 另一个 : `boost::shared_array` VS `boost::shared_ptr<std::vector>` ?

c++ - 为什么 malloc() 分配的内存比要求的多,我如何禁止 malloc 在 Mac OS X 中执行此操作?

c++ - 关于指针的说明