第二个const同第一个类似,表示改引用是只读的
第三个const有两个意思:
1、该函数可以被败穗缺察辩const的对象访问
2、告诉程序员这个函数不会改变对象内部状态
class A{
void ShowA(void) const{}
void ShowB(void) {}
}
void foo(const A&a)
{
a.ShowA()// 通过
a.ShowB()// 非法,const类型的对象只能访问const修饰的成员
}
在exceptional c++里有专门一节讲const的,建议看看这本书。这可以C++程序员的圣经啊!!
C++里的const与C里的const有所区别,C里的const所修饰的目标具有常量的性质,而C++里的const所修饰的目标仍然是变量的性质,但二者相同的一点败拿毁是其目标的值不能再改变。再说C++里的const比C里的意敏腔义扩展了很多,用在不同的地方有不同的细节差别,三言两语还真说不全。回到你的问题,const char* getName()察备const{...中的第一个const的意思是函数getName返回的指针指向的目标值是不可改变的,若代码后面有改变目标值的语句则过不了编译;而第二个const则是规定函数getName不能改变它所在对象的里的数据成员的值,也不能调用能改变这些数据成员值的函数,只能调用另一个const函数。所以这里的getName函数就被称为常成员函数,只有常成员函数才能 *** 作常对象——用<类名>const<对象名>形式声明的对象,对象一经初始化就不能再更改了。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)