c++ - 函数参数可以隐藏另一个函数标识符吗?
问题描述
静态代码分析根据 Misra 规则 2-10-2 识别构造函数参数begin
和end
隐藏相应成员函数(读取函数)的名称(在内部范围内声明的标识符不应隐藏在外部范围内声明的标识符)。这个对吗?
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;
}
解决方案
在我的理解中,这个 MISRA 规则是关于代码可读性和避免混淆而不是破坏代码。
所以从句法的角度来看,你的程序是正确的,但从 MISRA 的角度来看,它违反了这条规则,因为它覆盖了已经存在的标识符。
如果极端,一些不太注意的程序员可能会因为使用相同的名称而感到困惑。
但从实际的角度来看,这确实是一个细节,在我看来,你可以保留它。但是如果你的公司强制执行 MISRA 规则,你应该修复它。
推荐阅读
- javascript - 从注册表中读取键值
- r - 从数据框中调用变量,其名称存储为字符
- powershell - Powershell 读取一堆日志文件以将计算机添加到 ActiveDirectory 中的组并导出 CSV
- sql - 带有条件的多列上的 CASE WHEN 表达式
- json - 如何在使用 JSON 数据源的 jasper 报告中获取嵌套值作为字段
- c# - 如何从存储库而不是控制器添加响应消息
- php - 我的查询需要什么,可能不存在或不存在?
- typescript - 为什么打字稿的数学对象中没有“符号”方法?
- sql - 出现不匹配的 BEGIN 和 END 错误。但每个 BEGIN 都有一个 END,反之亦然
- jquery - 我无法获得电子邮件输入的价值