|
1
6
有时,您只需要查看一些代码/图表:)请注意,在标准中没有提到这个实现细节。 首先,让我们看看如何在C++中实现方法:
这类似于:
实际上,当您查看调试器中的方法调用时,您经常会看到
现在,转到虚拟表。在C和C++中,可以有指针来运行。vtable本质上是指向函数的指针表:
现在我可以做如下的事情:
现在,关于遗产。让我们创建另一个结构
用途:
但是如何自动化呢?
现在,在多重继承的情况下会发生什么?好吧,继承在内存布局方面非常类似于组合:
因此,将有两个虚拟表用于
纯虚拟函数通常在相应的字段中表示为空指针(简单)。 最后,建设和破坏: 施工
破坏
我认为这是非常全面的,我会很高兴,如果一些c++大师在那里可以检讨这一点,并检查我没有犯任何愚蠢的错误。另外,如果有什么东西不见了,我很乐意加上去。 |
|
|
2
6
我不能,真的。本节试图描述在使用虚拟方法表实现动态绑定(在多重继承的情况下)的C++实现中应该做些什么。 如果你不是在做编译器,我的建议是:不要麻烦了。阅读关于继承、虚拟方法、多继承和虚拟继承的最喜欢的C++书籍。 另外,C++标准(IIVC)不需要使用VTABLE,这是一个实现细节。所以说真的,不用麻烦了。 |
|
|
3
1
正如mkluwe所建议的,vpointer并不是语言的一部分。但是,知道 实现技术可能是有用的,尤其是在像C++这样的低级语言中。 如果你真的想学这个,我建议你 Inside the C++ Object Model 这就详细解释了这一点和其他很多事情。 |
|
AstralHex · 矩阵乘法代码工作不正常 9 月前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 9 月前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 9 月前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 10 月前 |