首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++和coverity问题

C++和coverity问题
EN

Stack Overflow用户
提问于 2012-01-23 10:49:51
回答 3查看 4.4K关注 0票数 4
代码语言:javascript
复制
MyClass* const Func(const std::string& statename)

因为这个coverity给出了错误

在返回类型上解析警告(PW.USELESS_TYPE_QUALIFIER_ON_RETURN_TYPE)类型限定符是没有意义的。

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

EN

回答 3

Stack Overflow用户

发布于 2012-01-23 11:02:53

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

原因是,理论上MyClass* const会阻止编辑Func()的返回值。但是,即使没有const,这也是不可编辑的,因为这里的不是lvalue.See 演示。因此,如果使用/不使用const,编译器将始终生成错误,以尝试修改Func()的返回值。

票数 6
EN

Stack Overflow用户

发布于 2012-01-23 10:53:25

返回类型中的const (MyClass* const)确实是完全没有意义的。同时,它只会使代码更加冗长,不会有什么害处。我个人会把它移走的。

要理解为什么没有意义,请考虑以下几点:

代码语言:javascript
复制
MyClass* p = Func(statement);

const有什么不同?

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

票数 5
EN

Stack Overflow用户

发布于 2012-01-23 10:51:39

您不需要删除const来获得工作代码,但是如果没有无意义的const,代码肯定会更好。“错误”前面的“警告”字也是这么说的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8970450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档