本文共 686 字,大约阅读时间需要 2 分钟。
我们定义两个 display 操作:一个是 const,另一个不是 const。 基于一个指针形参是否指向 const,可以重载一个函数。const对象只能使用 const 成员。非 const 对象可以使用任一成员,但非 const 版本是一个更好的匹配。
在此,我们将定义一个名为 do_display 的 private 成员来打印 Screen。每个 display 操作都将调用此函数,然后返回调用自己的那个对象:
class Screen {
public:
Screen& display(std::ostream &os){ do_display(os); return *this; }
const Screen& display(std::ostream &os) const{ do_display(os); return *this; }
private:
void do_display(std::ostream &os) const{ os << contents; }
};
现在, 当我们将 display 嵌入到一个长表达式中时, 将调用非 const 版本。当我们 display 一个 const 对象时,就调用 const 版本:
Screen myScreen(5,3);
const Screen blank(5, 3);
myScreen.set('#').display(cout); // calls nonconst version
blank.display(cout); // calls const version
转载地址:http://cuyii.baihongyu.com/