const成员函数

来源:互联网 发布:逆战天王宏数据 编辑:程序博客网 时间:2024/04/30 14:22

#include <iostream>  using namespace std;  class Widget  {  public:  Widget(int value):m_value(value){}  int GetValue()const // 成员函数的const版本  {  cout << "IN :    int GetValue()const" << endl;  return m_value;  }  int GetValue()   // 成员函数的非const版本  {  cout << "IN :    int GetValue()" << endl;  return m_value;  }  private:  int m_value;  };  int GetWidget(const Widget* cpWidget)  {  cout << "IN :    int GetWidget(const widget* cpWidget) "<< endl;  return cpWidget->GetValue();  }  int GetWidget(Widget* pWidget)  {  cout<<"IN :    int GetWidget(widget* pWidget)"<<endl;  return pWidget->GetValue();  }  void main()  {  Widget *pWidget1 = new Widget(4);     GetWidget(pWidget1);  const Widget *pWidget2 = new Widget(5);  GetWidget(pWidget2);  }  


运行结果:

如果将const 成员函数删除,程序编译不能通过。

这说明了:

1.    const 成员函数是供 const 对象 调用的。

2.    const 对象不能调用 非const 的成员函数

3.    非const 对象 优先调用 成员函数的非const版本。在没有 非const版本 的时候 会去调用 成员函数的 const 版本。


综上所述:如果 成员函数并没有改变 对象的意图的话,就将之设为 const 成员函数吧!