首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向C++对象模型添加元类级别

向C++对象模型添加元类级别
EN

Stack Overflow用户
提问于 2013-08-05 09:25:19
回答 1查看 202关注 0票数 2

有人能解释一下这个关于C++对象模型的理论问题吗?这是我最近的一次考试,我被它弄糊涂了。

问:注意到Java、C#和Smalltalk的成功,C++标准委员会决定在该语言的对象模型中增加一个额外的级别。也就是说,每个类都应该有一个在运行时具有表示的元类.

  1. 反对者说,这与语言的基本原则之一相矛盾。哪一个?解释一下。
  2. 反对者还声称,C++还有一个额外的“半级”功能,允许充分发挥元类级别的某些功能。这“半级”是什么?什么样的类拥有它的能力?
  3. 支持者们提出了一个获胜的论点。添加一个级别将在标记&扫描垃圾收集中提供对标记阶段的支持(在这个阶段中,所有可到达的对象首先被标记,然后不可访问的对象被释放)。他们的论点所依赖的附加层次上的什么特性?
  4. 此外,支持者们还提出了另一个论点。即使没有垃圾收集系统,附加级别也会使虚拟析构函数变得多余。解释何时和为什么需要虚拟析构函数,以及附加级别将如何消除这一需求?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-05 09:35:04

因为我没有上过你的课,我只能猜测:

他说: C++是一种乐高套件--你拿着你需要的东西,你可以留下所有其他的东西。你也不用付钱。添加这个额外的级别需要一些初始化和其他东西,我认为您不能选择不使用它--即使您不需要它。

2:具有vtable的类的RTTI

他说:在这里,我只能猜测--我假设一个类的所有实例都可以被元类访问,或者可以通过扫描内存来检测。如果是这样的话,您可以实现标记和扫描。

4:如果通过具有一个基类类型的指针销毁类实例,则需要虚拟析构函数。如果您可以从每个实例中找到元类,那么就可以调用正确的析构函数,而不必在vtable中查找它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18054684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档