【问题标题】:In what case should I create an own destructor?在什么情况下我应该创建自己的析构函数?
【发布时间】:2021-07-26 22:22:54
【问题描述】:

当我创建一个对象时,我的编译器会自动创建一个构造函数、析构函数和一个赋值运算符。我什么时候应该自己实现它们?

【问题讨论】:

  • 这是什么语言?
  • c++,抱歉我编辑了它
  • 你的意思是析构函数(不是“解构函数”)
  • 如果你在你的类中使用 new 分配内存,你可能必须实现 3 或 5 规则而不是 0 规则。也就是说,如果你的类使用原始所有权拥有内存所有权指针。

标签: c++ constructor variable-assignment destructor operator-keyword


【解决方案1】:

编写自己的析构函数的主要原因是释放动态分配的内存(例如,在您的类中使用new 创建)或在(不安全)指针中调用delete(例如,删除不是使用std::unique_ptrstd::shared_ptr创建的)。

有很多好的谷歌搜索结果可以了解更多,这是一个simple example

【讨论】:

    【解决方案2】:

    当你需要做一些超出生成的事情的时候,你需要实现一个析构函数,这只是为每个基和成员调用析构函数。

    在实践中,这意味着有一些超出个别成员的含义,需要同时了解多个领域;或

    RAII/RFID 添加到裸值;例如智能指针类释放它持有的指针。

    一般来说,如果你需要编写拷贝构造函数、拷贝赋值运算符或析构函数中的任何一个,那么你需要编写它们中的所有。这被称为Rule of Five

    【讨论】:

    • 已修复 -- 当我在 Chrome 中使用键盘快捷键时,有时无法进行复制操作。
    猜你喜欢
    • 2011-06-21
    • 2017-08-30
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2012-09-15
    相关资源
    最近更新 更多