int const func1();
int func2() const;
func1是合法的,表示是一个常量函数,返回的是一个常量的值,也就是返回的值是不可以改变的!表示该成员函数的隐藏this指针参数是int* const类型的。
func2是非法的!const用在函数后只要是针对类的const对象。因此对函数的const限定词只能用于类的成员函数。使用const修饰的成员函数称为常成员函数,只有常成员函数才能操作常量或者常对象;没有常对象修饰的函数不能操作常对象。
常成员函数的说明格式为: <类型说明符> <函数名> (<参数表>) const; 其中,const是加在函数说明后面的类型修饰符,它是函数类型的一个组成部分,因此,在函数实现部分也要带const关键字。
给个例子:
class Text
{
public:
void printconst(void) const
{cout<<"hello"<<endl;}
void print(void)
{cout<<"hello"<<endl;}
private:
int k;
};
const Text a; //定义了类Text的一常量对象 ;
int main(void)
{
a.printconst(); //ok
a.print(); //error a.print()调用是非法的
return 0;
}