【发布时间】:2013-10-04 15:22:51
【问题描述】:
假设给出以下代码。
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++ Rule 10-3-3:代码分析器给出警告:纯虚函数覆盖非纯虚函数。
但我找不到有关警告的详细信息。上述代码的副作用是什么?这里有什么不好的做法?
更新:标准是 MISRA-C++ (C++98)
【问题讨论】:
-
这是否打算成为 C++11 的 virt-specifier
final的简陋版本? (C++11 10.3p4) -
如果发出警告,那么std::is_abstract 是干什么用的?
-
请检查更新的问题,标准是c++98
-
好的,让我复习一下,但我需要一些时间,关于 Liskov 可替代性的论文太少了。
标签: c++ inheritance polymorphism c++98 misra