次のコードが与えられたとします。 純粋 -virtual方法と仮想関数オーバーライド仮想関数
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指定子 'final'の貧弱なバージョンですか? (C++ 11 10.3p4) – WhozCraig
警告が出たら、[std :: is_abstract](http://en.cppreference.com/w/cpp/types/is_abstract)は何ですか? – raina77ow
更新された質問を確認してください、標準はC++ 98 – deimus