我只是想知道是否是這個下面的代碼塊中的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