一个普通技术宅的点点滴滴

0%

学习总结第十三天_类的私有功能函数

今天继续对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。