纯虚函数覆盖虚函数

dei*_*mus 9 c++ polymorphism inheritance misra c++98

假设给出了以下代码.

class A
{
public:
   virtual void someMethod()
   {
      std::cout << "class A" << std::endl;
   }
};

class B : public A
{
public:
   ...
   virtual void someMethod() = 0;
   ...
};
Run Code Online (Sandbox Code Playgroud)

类使用 -virtual方法B覆盖someMethod虚方法.这样做的目的可能是在我们的case类中不允许修改的现有类的扩展,但仍然有一个抽象类,它必须是一些其他类的基类.AB

根据MISRA-C++规则10-3-3:代码分析器发出警告:纯虚函数会覆盖非纯虚函数.

但我找不到有关警告的更多细节.上述代码的副作用是什么?这里有什么不好的做法?


更新:标准是MISRA-C++(C++ 98)

vin*_*aut 5

我在这里看不到任何谜团.代码分析器可能会根据MISRA标准检查您的代码,而不是C++ 98标准.

MISRA是一套针对汽车环境的C/C++编码标准,它对语言标准认为合法/允许的内容施加了进一步的限制.

您将使用纯虚函数覆盖非纯虚函数,显然这对编译器来说是可以的,但不适用于MISRA规则.

也就是说,您的程序将编译并执行正常,并且符合语言标准,但可能不被需要代码审查和符合MISRA标准的客户接受.