微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

常量成员函数更改对象数据成员

如何解决常量成员函数更改对象数据成员

嗨,我正在读一本书,在 const 成员函数部分有一个疑问。代码如下:

class Screen {
public:
    // display overloaded on whether the object is const or not
    Screen &display(std::ostream &os)
        { do_display(os); return *this; }
    const Screen &display(std::ostream &os) const
        { do_display(os); return *this; }
private:
    // function to do the work of displaying a Screen
    void do_display(std::ostream &os) const
    {os<<contents;}

};

我的问题是在最后一行,写的是 os 但由于 do_display 是一个 const 成员函数,它如何修改 std::string 类型的数据成员内容? 同样,contents 是 Screen 类的私有数据成员,正如您在示例中看到的那样,内容已在 const 成员函数内进行了更改。这是怎么回事? const 不是意味着我们不能改变类的任何数据成员吗?书上有错别字还是我遗漏了什么?作为参考,我附上了我突出显示这部分的书中的屏幕截图。

Screenshot 1

解决方法

由于 os 不是您班级的成员,所以这不是问题。类的成员在该语句中没有改变。

contents 成员只能读取,不能修改。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。