2013-04-15 186 views
0

说我有一个继承类与函数A和B. B做了一些事情,并调用A. 基类也有函数A和B. B以不同的方式做事情,然后调用A(派生类的A)。然而,在特定情况下,我想调用基类的B.这是使用Base :: B()完成的。然后B会打电话给A,我的问题是,它会打电话给A?基础的还是继承的?继承,隐藏函数和范围C++

回答

2

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

0

您在这里提出一个通用的场景,但它足以确定您指的是MRO,又名方法解析顺序,这是算法(或类算法,你可以使用这个缩写指一个普通的话题或一个特定的单一事物)用于确定哪种方法需要被调用。

MRO如何在标准中描述的C++情况下工作,但在SO上有一个专用标签method-resolution-orderan answer,可以给你一个广泛的观点。