C++和覆盖问题

Sud*_*kar 3 c++ static-analysis coding-style coverity-prevent function-signature

MyClass* const Func(const std::string& statename)
Run Code Online (Sandbox Code Playgroud)

因为这个封面是错误的

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

我们真的需要在这里删除const吗?

iam*_*ind 6

警告是正确的.该MyClass* const是没有必要的.应该MyClass*简单.但是,您不需要将其删除,但应将其删除.

原因是,理论上 MyClass* const会阻止Func()编辑的返回值.但即使没有const,这也是不可编辑的,因为它不是一个左值.请看这里的演示.所以有/无const,编译器总会生成错误,试图修改返回值Func().

  • 如果它有用,您可能想[接受答案](http://meta.stackexchange.com/q/5234/161198).这当然取决于你. (3认同)

NPE*_*NPE 5

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

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

MyClass* p = Func(statement);
Run Code Online (Sandbox Code Playgroud)

造成了什么不同const

换句话说,返回T* const在概念上与返回没有区别const int