假设我有一个带有函数A和B的继承类.B执行某些操作并调用A. 基类也有函数A和B.B以不同的方式处理事物,然后调用A(派生类的A)。但是在特定情况下我想调用基类B.这是使用Base :: B()完成的。然后B会打电话给A,我的问题是,它会打电话给哪一个A?基础的还是继承的?
答案 0 :(得分:2)
这取决于A是否为虚拟。如果虚拟派生版本将被调用,如果不是,它将是基本版本。
答案 1 :(得分:0)
您在这里提出了一个通用方案,但它足以确定您指的是 MRO ,又名方法解析顺序,这是算法(或算法类,您可以使用此首字母缩略词来指代需要调用哪个方法的一般主题或特定单个事物。
MRO如何在标准本身中描述的C ++案例中工作,但在此处有一个名为method-resolution-order和an answer的专用标记,可以为您提供广泛的视图。< / p>