【发布时间】:2011-04-01 02:30:52
【问题描述】:
我最近阅读了很多关于“防止类的堆分配”(参见this question)。
我能够理解“如何”,但现在我无法弄清楚“为什么”有人愿意这样做。
我想这一定有正当的理由,但我就是想不通。
简而言之:“为什么我要禁止用户在堆中创建我的类的对象?”
【问题讨论】:
-
我真的想不出你所指问题的充分理由。使用这个问题的当前措辞,您很可能会得到很多答案:为什么我更喜欢在堆栈而不是堆中分配?,这与 为什么我可以想要禁止用户在堆中创建我的类的对象?
-
@David:根据您的建议修改了措辞。谢谢。
-
我修改了标题以反映实际问题。
-
堆分配基本上有两种:直接和间接。如果一个对象是堆分配的另一个对象的子对象(基对象或成员),则该对象是间接堆分配的。这个问题目前没有区分它们,答案也没有解决它。然而,对于间接堆分配的对象,上述根本原因可能成立,也可能不成立。
-
一般来说,如果这样做总是一个错误(例如,浅复制一个对象以释放其析构函数中的资源),你只想明确禁止某些事情,而不仅仅是因为你可以'想不出允许它的理由。动态分配是否有任何原因可能会出错?
标签: c++ class memory-management heap-memory stack-memory