我只是想知道是否是这个下面的代码块中的C++完全有效:这是有效的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但它编译没有任何错误,在海湾合作委员会(MinGW的)3.4.5它给了我这样的错误:
cannot declare member function `A::b' within `C'
在虚拟方法的实现线上。我很好奇这是否通常被认为是无效的,并且被C++标准禁止的代码(并且在VS中它因此起作用,这要归功于一些MS非标准化的魔术),或者只有GCC中的错误或不支持的语言功能。
除此之外,非虚拟dtor是一个滴答作响的炸弹。但那不是问题。 :) – wilhelmtell 2009-06-06 21:43:05