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)
我在这里看不到任何谜团.代码分析器可能会根据MISRA标准检查您的代码,而不是C++ 98标准.
MISRA是一套针对汽车环境的C/C++编码标准,它对语言标准认为合法/允许的内容施加了进一步的限制.
您将使用纯虚函数覆盖非纯虚函数,显然这对编译器来说是可以的,但不适用于MISRA规则.
也就是说,您的程序将编译并执行正常,并且符合语言标准,但可能不被需要代码审查和符合MISRA标准的客户接受.