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/

相关文章:

c++ - 从函数返回的左值引用实际上是右值(从调用者的角度来看)吗?

c++ - linux安装sdk后提示No such file or directory,如何解决?

C++ 预编译头文件和包含文件组织

c++ - 为什么此代码片段适用于 C++17 而编译器在使用 C++11 时会报错?

c++ - 可选元素会破坏 RAII 吗?如果是,什么是更好的方法?

c++ - OpenCV Mat bitwise_xor with randu()

c++ - 如何遍历字符串并知道索引(当前位置)?

c++ - 为什么 std::count(_if) 返回 iterator::difference_type 而不是 size_t?

c++ - 在具有存储基成员的基类的派生类中使用/存储派生成员

c++ - 将资源锁定对象作为参数传递