gpt4 book ai didi

c++ - 如果我的类正确管理资源,那么拥有智能指针有什么意义呢?

转载 作者:行者123 更新时间:2023-12-01 21:16:25 25 4
gpt4 key购买 nike

我是智能指针的新手,我喜欢使用它们来保证共享对象的安全性和强大功能...

我有一个问题:如果我的类在其构造函数和析构函数中管理资源,并应用一些经验法则(例如 Big 5 和 Big 3)...我是否仍然应该使用智能指针?或者我的类(class)是他们的替代品。因为正如我在 C++ 入门 5 版中读到的那样,智能指针来解决原始指针面临的问题,例如内存泄漏、双重删除指针和访问悬空指针......我的类可以避免这些问题:

class BallGame {
public:
using Resource = int;

BallGame(int);
BallGame(const BallGame&);
BallGame(BallGame&&);
BallGame& operator=(const BallGame&);
BallGame& operator=(BallGame&&);
~BallGame();
private:
Resource m_res;
};
  • 考虑到我的类(class)成员正在做正确的工作,那么我可以避免使用智能指针吗?

  • 我想知道一些情况下我应该使用智能指针而不是管理类中的资源。

  • 它们真的像 C++ 入门书中那样用于“哑类”(定义构造函数但不定义行为良好的析构函数的类)吗?

最佳答案

您的问题可以理解为

If I implement correct semantics for memory ownership of a smart pointer by hand in each class I use, can I avoid using smart pointers?

是的,但是为什么呢?当您需要动态数组时,是否每次需要时都会手动重新实现基本的 std::vector 语义?我不这么认为。

这就是库的目的,避免每次都重新发明轮子。

关于c++ - 如果我的类正确管理资源,那么拥有智能指针有什么意义呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58634777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com