Const 成员函数更改对象数据成员
Const member function Changing Object Data Member
您好,我正在看书,对 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 是 class Screen 的私有数据成员,正如您在示例中看到的,contents 已在 const 成员函数内更改。这是怎么回事? const 不是意味着我们不能更改 class 的任何数据成员吗?书中有错字还是我遗漏了什么?作为参考,我附上了我突出显示这部分的书中的屏幕截图。
因为 os
不是您 class 的成员,所以这不是问题。 classes 的成员在该语句中没有更改。
contents
成员只读,不修改。
您好,我正在看书,对 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<
因为 os
不是您 class 的成员,所以这不是问题。 classes 的成员在该语句中没有更改。
contents
成员只读,不修改。