C++语言程序设计

例如：
int Point::GetY()
{
return yVal;
}
这个函数被调用时，不改变Point对象，而下面的函数改变Point对象：
void Point:: SetPt (int x, int y)
{
xVal=x;
yVal=y;
}
为了使成员函数的意义更加清楚，我们可在不改变对象的成员函数的函数原型中加上const说明：

| 例10-15

class Point
{
public:
int GetX() const;
int GetY() const;

void SetPt (int, int);
void OffsetPt (int, int);
private:
int xVal, yVal;
};

const成员函数应该在函数原型说明和函数定义中都增加const限定：

| 例10-16

int Point::GetY() const
{
return yVal;
}

class Set {
public:
Set (void){ card = 0; }
bool Member(const int) const;
void AddElem(const int);
//...
};

bool Set::Member (const int elem) const
{
//...
}

非常量成员函数不能被常量成员对象调用，因为它可能企图修改常量的数据成员：
const Set s;
s.AddElem(10); // 非法: AddElem不是常量成员函数
s.Member(10); // 正确
但构造函数和析构函数对这个规则例外，它们从不定义为常量成员，但可被常量对象调用（被自动调用）。它们也能给常量的数据成员赋值，除非数据成员本身是常量。