我想知道下面这段代码在C++中是否完全有效:
class A
{
public:
virtual bool b() = 0;
};
class B
{
public:
virtual bool b() = 0;
};
class C: public A, public B
{
public:
virtual bool A::b()
{
return true;
}
virtual bool B::b()
{
return false;
}
};
使用VS2008编译时没有任何错误,然而在GCC(MinGW)3.4.5上会报错,例如:
cannot declare member function `A::b' within `C'
在实现虚方法的行上。我很好奇这是否只是通常被视为无效的、根据C++标准禁止的代码(在VS中它能够工作,这得益于一些微软非标准化的魔法),还是GCC中的一个错误或不支持的语言特性。