首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个函数参数可以隐藏另一个函数标识符吗?

一个函数参数可以隐藏另一个函数标识符吗?
EN

Stack Overflow用户
提问于 2020-11-27 20:29:55
回答 2查看 63关注 0票数 0

静态代码分析将构造函数参数beginend标识为根据Misra规则2-10-2隐藏相应成员函数(读取函数)的名称(内部作用域中声明的标识符不应隐藏外部作用域中声明的标识符)。这是正确的吗?

代码语言:javascript
复制
template <typename T>
class TLineSegment
{
public:
   TLineSegment(const point_type& begin, const point_type& end)
      : m_begin(begin)
      , m_end(end)
   {
   }

   const point_type& begin() const
   {
      return m_begin;
   }

   const point_type& end() const
   {
      return m_end;
   }

private:
   point_type m_begin;
   point_type m_end;
}
EN

回答 2

Stack Overflow用户

发布于 2020-11-27 20:41:13

在我的理解中,这条MISRA规则是关于代码的可读性和避免混淆,而不是破坏代码。

所以从语法的角度来看,你的程序是正确的,但是从MISRA的角度来看,它违反了这个规则,因为它覆盖了已经存在的标识符。

如果极端地说,一些不太注意的程序员可能会因为使用相同的名称而感到困惑。

但从实际的角度来看,这确实是一个细节,在我看来,您可能会留下它。但如果你的公司强制MISRA规则,你应该解决它。

票数 2
EN

Stack Overflow用户

发布于 2020-11-27 22:52:02

编译器首先查看names,然后再由决定如何处理它们。因此,begin是函数参数的名称。编译器不会忽略这一点,看看是否有其他定义可以在函数调用中使用。

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

https://stackoverflow.com/questions/65037399

复制
相关文章

相似问题

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