今天继续对C++类进行了学习,对于类的功能函数有了新的认识
一般来说,类的功能函数应该声明为公共的,但是有时候不同,比如在这种情况
public:
Screen& display count (std::ostream &os)
{
//Some code
return *this;
}
这是一个类内的函数,其作用是输出类中的信息到指定的输出流中。这个函数实际对于类的成员变量并没有修改,所以我们一般会将其声明中加入count来保护,但是由于加入了count后,this是一个常量引用,所以无法正确返回,必须修改成这样。
public:
count Screen& display count (std::ostream &os)
{
//Some code
return *this;
}
但是,这样的话由于返回的对象是一个count,就无法再进行其他写入操作了,比如这样:
myscr.display(os).write(' ');
我们如果又不想放弃count的保护特性的话,便可以这样处理:
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
{
//Some code
}
这样做,可以在public中对display这个函数进行重载以适应不同的调用情况,同时,用一个私有成员函数进行进行代码复用,这样就可以避开将来修改时可能引入的许多bug。