1,
#include <iostream>
using namespace std;
class A
{
public:
virtual ~A() {}
virtual void f()
{
cout << "A::f\n";
}
};
class B : virtual public A
{
public:
void f()
{
cout << "B::f\n";
}
};
class C : public B, virtual public A {};
int main()
{
A* p = new C;
p->f(); // Calls B::f()
//注:由于B是A的子类,因此按照名字作用域查找规则,B的优先级高于A
delete p;
}