现在的位置: 首页 > 综合 > 正文

const成员函数

2013年02月20日 ⁄ 综合 ⁄ 共 787字 ⁄ 字号 评论关闭
#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 成员函数吧!

抱歉!评论已关闭.