#include <iostream>
struct B1
{
virtual void method()=0;
virtual ~B1(){}
};
struct B2
{
virtual void method()=0;
virtual ~B2(){}
};
struct D: B1, B2
{
virtual void method()
{
std::cout << "D::method\n";
};
};
int main(int argc,char *argv[])
{
D d;
B1 &b1=d;
B2 &b2=d;
b1.method();
b2.method();
return 0;
}
注意,B1和B2没有共同的接口。
这样合法吗?如果可以,符合哪个标准?C++98/03/11?
MSVC和GCC都已经编译成功。
之前我认为,在这种情况下必须使用一些共同的接口(可能是虚继承)。
这种情况有特殊的名称吗?
它如何详细工作?也许有一些ISO参考资料?