有人能解释一下这个关于C++对象模型的理论问题吗?这是我最近的一次考试,我被它弄糊涂了。
问:注意到Java、C#和Smalltalk的成功,C++标准委员会决定在该语言的对象模型中增加一个额外的级别。也就是说,每个类都应该有一个在运行时具有表示的元类.
发布于 2013-08-05 09:35:04
因为我没有上过你的课,我只能猜测:
他说: C++是一种乐高套件--你拿着你需要的东西,你可以留下所有其他的东西。你也不用付钱。添加这个额外的级别需要一些初始化和其他东西,我认为您不能选择不使用它--即使您不需要它。
2:具有vtable的类的RTTI
他说:在这里,我只能猜测--我假设一个类的所有实例都可以被元类访问,或者可以通过扫描内存来检测。如果是这样的话,您可以实现标记和扫描。
4:如果通过具有一个基类类型的指针销毁类实例,则需要虚拟析构函数。如果您可以从每个实例中找到元类,那么就可以调用正确的析构函数,而不必在vtable中查找它。
https://stackoverflow.com/questions/18054684
复制相似问题