C++ getStringId成员函数末尾第二个const的作用是什么
C++ 成员函数尾部const语义说明
你给出的两段代码分别是类的成员变量声明,以及对应的getter成员函数实现:
// 头文件成员变量声明 std::string m_StrId; // 源文件成员函数实现 const std::string& getStringId() const { return m_StrId; }
你问的参数列表后的第二个const,作用有两个核心点:
- 限定该成员函数为只读成员函数,函数内部不允许修改类的任意非静态成员变量,如果你在该函数内尝试修改
m_StrId或者其他非静态成员,编译器会直接抛出错误,从语法层面保证函数不会修改类实例的状态。 - 支持const类实例调用该函数:如果某个类的实例被声明为const类型,它只能调用带尾部const标识的成员函数,未加该标识的普通成员函数会被编译器禁止调用,避免const实例的状态被意外修改。
另外补充说明,该函数返回值用const std::string&是和尾部const的语义完全匹配的:返回内部成员的const引用,避免外部调用者通过返回值直接修改类内部的m_StrId变量,进一步保证类内部状态的安全性。
内容的提问来源于stack exchange,提问作者badri
相关产品推荐
相关产品推荐

