const成员函数就是在正常的成员函数后面加上了const,这样的目的就是告诉编译器在这个函数中不能修改类中的成员变量,这是通过改变隐含的this形参的类型,使之指向一个只读的对象来完成的。
当然,要注意的是,是在本函数内部无法修改类中的成员变量,不是针对整个类或者其他函数的。
#include<iostream>
#include<string>
using namespace std;
class f{
private :
string s;
public:
f(string s)
{
this->s=s;
}
void xiugai(string ss)
{
this->s=ss;
}
void noxiugai() const
{
cout<<this->s;
}
};
int main()
{
string s="hello";
f f(s);
f.noxiugai();
string ss="world";
f.xiugai(ss);
f.noxiugai();
return 0;
}
这个函数的运行结果就是:
helloworld,从这个结果可以看出,这个对象是通过xiugai()函数将这个成员变量修改了。但是如果你在这个const函数中修改的话,会报错。
2.还有一点就是定义一个const的对象会不会也能达到这个不能修改成员变量的效果呐,其实,不是的,因为这样的对象只能调用const成员函数,其他的函数是无法调用的,即使在这个函数中没有修改成员变量,在调用时也会报错。
3.const成员函数在类外声明时也需要写上const:
如下:
#include<string>
using namespace std;
class f{
private :
string s;
public:
f(string s)
{
this->s=s;
}
void xiugai(string ss)
{
this->s=ss;
}
void noxiugai() const;
void f::noxiugai() const
{
cout<<this->s;
}
int main()
{
string s="hello";
const f f(s);
f.noxiugai();
string ss="world";
f.xiugai(ss);
f.noxiugai();
return 0;
}
这个类于上面的类一样。
以上只是我本人的理解,如果理解有误,请各位不吝赐教!