【发布时间】:2011-09-10 10:14:04
【问题描述】:
我在我的嵌入式系统中使用 C++ 基类和子类(为了清楚起见,我们称它们为 A 和 B)。
这是时间和空间的关键,所以我真的需要它是最小的。
编译器抱怨缺少虚拟析构函数,我理解这一点,因为如果您分配 B* 并随后将指针作为 A* 的实例删除,这可能会给您带来麻烦。
但我永远不会分配此类的任何实例。有没有一种方法可以重载operator new(),以便在没有动态分配任一类时编译,但如果最终用户尝试分配 A 或 B 的新实例,则会导致编译器错误?
我正在寻找一种与通过私有构造函数“毒化”自动编译器复制构造函数的常用技术类似的方法。 (例如http://channel9.msdn.com/Forums/TechOff/252214-Private-copy-constructor-and-private-operator-C)
【问题讨论】:
-
你帖子的最后一部分让我想知道你是否需要单例模式实现。en.wikipedia.org/wiki/Singleton_pattern
-
@Rycul:谢谢,它们不是单例,只是在小型嵌入式系统中,我们倾向于使用静态或堆栈分配来完成几乎所有事情。
-
只是为了好奇。我不明白,你为什么需要一个虚拟析构函数?仅仅因为你正在派生并不意味着你需要一个虚拟析构函数。你还有其他虚拟功能吗?如果你一开始不打算使用动态内存,你将如何使用这样的功能?
-
@alfC:重读:“编译器抱怨缺少虚拟析构函数。”
-
附注对 cmet 多年前提出的问题的回答保持低期望