【发布时间】:2021-05-20 14:38:57
【问题描述】:
您好,我正在读一本书,并且在 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 不是意味着我们不能更改类的任何数据成员吗?书里有错字还是我遗漏了什么?作为参考,我附上了我突出显示这部分的书中的屏幕截图。
【问题讨论】:
-
该声明来自
contents。os被“修改”,而不是内容。 -
“如您在示例中看到的内容已更改...”,不,我没有看到它。
标签: c++ c++11 constants ostream