有人可以解释这个关于 C++ 对象模型的理论问题吗?这是我最近的一次考试,我被它难住了。
问:C++ 标准委员会注意到 Java、C# 和 Smalltalk 的成功,决定在语言的对象模型中增加一个额外的级别。也就是说,每个类都应该有一个在运行时具有表示的元类。
反对者说,这与该语言的一项基本原则相矛盾。哪个?解释。
反对者还声称 C++ 有一个额外的“半级”,它允许完整元类级别的一些功能。这是什么“半级”,什么样的门类享受它的能力?
支持者提出了一个成功的论点。添加一个级别将为标记和清除垃圾收集中的标记阶段提供支持(其中首先标记所有可访问的对象,然后释放不可访问的对象)。他们的论点依赖于附加层次中的什么特征?
此外,支持者还提出了另一种说法。即使没有垃圾收集系统,附加级别也会使虚拟析构函数变得多余。解释何时以及为什么需要虚拟析构函数以及额外的级别将如何消除该要求?