类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。C++支持常量性不同的重载,例如下面的GetData函数。
#include "Test.h" Test::Test(void) { data=0; } Test::~Test(void) { } const int Test::GetData() const { int y=0; //return y++; 这个可以,因为y不是成员变量 //return data++;编译不通过,data是成员变量,不可以在函数内改变 return data; } int Test::GetData() { return ++data;//成员函数后面没有const,可以修改成员变量的值。 }
const 对象调用const 成员函数,no const调用 no const成员函数。
int main(int arg,char * agrs) { const Test* test=new Test(); Test* testno=new Test(); int data=test->GetData(); std::cout<<"const"<<data<<endl; std::cout<<"no const"<<testno->GetData()<<endl; getchar(); return 0; }
结果是: