”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 为什么将 Const 对象传递给非常量成员函数会导致 C++ 中的限定符取消资格错误?

为什么将 Const 对象传递给非常量成员函数会导致 C++ 中的限定符取消资格错误?

发布于2025-01-14
浏览:305

Why Does Passing a Const Object to a Non-Const Member Function Cause a Qualifier Disqualification Error in C  ?

将常量对象作为“this”参数传递:限定符取消资格错误

在 C 中,将常量对象作为“this”参数传递给成员函数可能会导致“将‘const xxx’作为成员函数的‘this’参数传递会丢弃限定符”错误。出现这种情况是因为编译器考虑到非常量成员函数可能修改对象的可能性,而对于const对象是禁止这样做的。

问题分析

提供的代码中,集合中的对象存储为 const StudentT。在循环内访问成员函数 getId() 和 getName() 时,编译器会检测到此问题,因为对象是 const 并且成员函数未标记为 const。

Solution

要解决该错误,必须将 getId() 和 getName() 函数设置为 const:

int getId() const {
    return id;
}

string getName() const {
    return name;
}

这允许在 const 对象上调用函数而不违反 const 规则。

附加说明

  • 同样,运算符
inline bool operator
  • 将引用(而不是对象)传递给成员函数对于性能和代码正确性来说是更好的选择。
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3