gpt4 book ai didi

c++ - 纯虚函数覆盖虚函数

转载 作者:可可西里 更新时间:2023-11-01 16:38:13 25 4
gpt4 key购买 nike

假设给出以下代码。

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

class B : public A
{
public:
...
virtual void someMethod() = 0;
...
};

B 类用 pure 虚方法覆盖 someMethod 虚方法。这样做的目的可能是现有类的扩展,在我们的案例类A中不允许修改,但仍然有一个抽象类B,它必须是基类一些进一步的类(class)。

根据 MISRA-C++ 规则 10-3-3:代码分析器给出警告:Pure virtual function override a non pure virtual function。

但是我找不到关于警告的详细信息。上述代码的副作用是什么?这里有什么不好的做法?


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

最佳答案

我看不出这里有什么神秘之处。代码分析器可能会根据 MISRA 标准而不是 C++ 98 标准检查您的代码。

MISRA 是一套适用于汽车环境的 C/C++ 编码标准,它对语言标准假定合法/允许的内容施加了进一步的限制。

您正在用一个纯虚函数覆盖一个非纯虚函数,显然这对编译器来说是可以的,但对 MISRA 规则来说是不行的。

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

关于c++ - 纯虚函数覆盖虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19065836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com