常常把对象的成员函数分为两类:修改对象状态的成员函数、获取对象状态的成员函数。
常成员函数就是一种获取对象状态的成员函数,并且不能改变对象的状态(也就是不能修改对象的成员的值)。
形式:
class A
{ ...
void f() const {...}
}
或
class A
{...
void f() const;//声明
}
void A::f() const //定义
{
...
}
当时要注意下面两个例子:
class A
{
int x;
char *p;
public:
...
void f() const
{
x=10; //Error
p = new char[20]; //Error
}
}
class A
{
int x;
char *p;
public:
...
void f() const
{
strcpy(p,"abc");//没有改变p的值,因此编译程序认为OK
*p = 'A';//同上
}
}
这样的问题就需要程序设计者自己来把握了!!!