假設給出以下代碼。純虛函數重寫虛函數
class A
{
public:
virtual void someMethod()
{
std::cout << "class A" << std::endl;
}
};
class B : public A
{
public:
...
virtual void someMethod() = 0;
...
};
類B
覆蓋someMethod
虛擬方法與純 - 虛擬方法。 這樣做的目的可能是現有類的擴展,在我們的案例類A
中不允許修改,但仍然有抽象類B
,它必須是某些其他類的基類。
根據MISRA-C++規則10-3-3:代碼分析器發出警告:純虛函數覆蓋非純虛函數。
但我找不到有關警告的更多細節。上述代碼的副作用是什麼?這裏有什麼不好的做法?
UPDATE:標準是MISRA-C++(C++ 98)
這是否意圖成爲C++ 11的virt-specifier'final'的窮人版本? (C++ 11 10.3p4) – WhozCraig
如果給出警告,那麼什麼是[std :: is_abstract](http://en.cppreference.com/w/cpp/types/is_abstract)? – raina77ow
請檢查更新的問題,標準是C++ 98 – deimus