C++和遮盖问题

C++ and coverity issues

本文关键字:问题 C++      更新时间:2023-10-16
MyClass* const Func(const std::string& statename)

因为这个覆盖率是给出错误

解析警告(PW.USELESS_TYPE_QUALIFIER_ON_RETURN_TYPE( 类型 返回类型的限定符毫无意义。

我们真的需要删除这里的常量吗?

警告是正确的。不需要MyClass* const。它应该MyClass*简单。但是,您不需要删除它,但您应该删除它。

原因是,理论上MyClass* const会阻止编辑Func()的返回值。但无论如何,即使没有const,这也是不可编辑的,因为它不是一个左值。在此处查看演示。所以有/没有const,编译器将始终生成错误,以尝试修改Func()的返回值。

返回类型(MyClass* const(中的const确实是完全没有意义的。同时,除了使代码更冗长之外,它没有任何害处。我个人会删除它。

要理解为什么它毫无意义,请考虑以下事项:

MyClass* p = Func(statement);

const有什么不同?

换句话说,返回T* const在概念上与返回const int没有什么不同。

您无需删除const即可获取工作代码,但是如果没有毫无意义的const,代码肯定会更好。这也是"错误"前面的"警告"字所说的。