0

假设我有一个带有函数 A 和 B 的继承类。B 做了一些事情并调用 A。基类也有函数 A 和 B。B 以不同的方式做这件事,然后调用 A(派生类的 A)。但是在特定情况下,我想调用基类的 B。这是使用 Base::B() 完成的。然后B会打电话给A,我的问题是,它会打电话给哪个A?基础的还是继承的?

4

2 回答 2

2

这取决于A是否是虚拟的。如果 virtual 将调用派生版本,否则它将是基本版本。

于 2013-04-15T11:37:16.943 回答
0

您在这里提出了一个通用场景,但足以确定您指的是MRO,也就是Method Resolution Order,它是算法(或算法类,您可以使用此首字母缩写词来指代一般主题或具体的单一事物)用于确定需要调用哪个方法。

MRO 如何在标准本身中描述的 C++ 案例中工作,但是这里有一个名为method-resolution-order的专用标签,并且答案可以让您对此有一个广泛的了解。

于 2013-04-15T11:40:18.557 回答