次のコードが与えられたとします。
class A
{
public:
virtual void someMethod()
{
std::cout << "class A" << std::endl;
}
};
class B : public A
{
public:
...
virtual void someMethod() = 0;
...
};
クラスは、仮想メソッドを純粋なB
仮想メソッドでオーバーライドします。これを行う目的は、ケース class で変更することを許可されていない既存のクラスの拡張である可能性がありますが、さらにいくつかのクラスの基本クラスでなければならない抽象クラスをまだ持っています。someMethod
A
B
MISRA-C++ ルール 10-3-3によると: コード アナライザーは次の警告を出します:純粋仮想関数は非純粋仮想関数をオーバーライドします。
しかし、警告に関する詳細はあまり見つかりません。上記のコードの副作用は何ですか? ここで悪い習慣は何ですか?
更新: 標準は MISRA-C++ (C++98) です