c++ - 我们如何在常量成员函数中调用 "delete this; "?

标签 c++ delete-operator const-correctness

我看到的代码片段如下:

class UPNumber {
public:
  UPNumber();
  UPNumber(int initValue);
  ...

  // pseudo-destructor (a const member function, because
  // even const objects may be destroyed)
  void destroy() const { delete this; } // why this line is correct???

  ...

private:
  ~UPNumber();
};

首先,我确信上面的类定义是正确的。 这是我的问题,为什么我们可以像上面那样定义函数'destroy'? 问的原因是为什么我们可以在常量成员函数中修改“this”?

最佳答案

这与这项工作的原因相同:

const int* upn = new int();
delete upn;

您可以删除 指向 const 限定对象的指针。成员函数上的 const 限定仅意味着 this 具有类型 const UPNumber*

关于c++ - 我们如何在常量成员函数中调用 "delete this; "?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5148656/

相关文章:

c++ - 在 Qt 中,为什么相同图标的 cacheKey 不同

C++ 指针和动态数组以及删除运算符

d - 我应该何时以及如何在 D 中使用 `const` 和 `immutable`?

c++ - 智能指针的 const 正确性

c++ - 如何在不欺骗编译器的情况下保持这个常量正确?

c++ - 带有使用模板的方法的嵌套结构

java - stdin、stdout、stderr 如何关闭

c++ - 跨翻译单元不一致的模板特化状态?

c++ - 如何删除这种二维数组?

c++ - 使用 SecureZeroMemory 新建/删除问题