const成员函数的作用是保护类型不在此函数中不修改。
#include <iostream>
using namespace std;
class A
{
private:
int i;
public:
A()
{
i = 10;
}
void F() const
{
i = 11;
cout<<i<<endl;
}
};
int main(int argc,char*argv[])
{
A a;
a.F();
int i = 0;
cin>>i;
}
将提示错误:error C2166: l-value specifies const object
如果写成这样:
#include <iostream>
using namespace std;
class A
{
private:
int i;
public:
A()
{
i = 10;
}
void F() const
{
*((int*)this) = 11;
cout<<i<<endl;
}
};
int main(int argc,char*argv[])
{
A a;
a.F();
int i = 0;
cin>>i;
}
可以顺利编译通过,输出11
可以看出const关键字和private关键字一样,只是编译器为我们提供的表面的安全的措施,真正的安全可能只能靠硬件来实现了。