对于类的成员函数而言,非静态成员函数属于类的具体对象,而静态成员函数属于该类,对于该类的所有对象是公有的。静态成员函数的调用不需要创建该类的对象。而非静态成员函数的调用必须先建立该类。
常成员函数:
int GetX() const; //声明常成员函数
常成员函数含义是通过该函数只能读取同一类中的数据成员的值,而不能修改它。
1.常成员函数不能更新对象的数据成员
2.当一个对象被声明为常对象,则不能通过该对象调用该类中的非const成员函数
3.非常量成员函数不能被常量成员对象调用,因为它可能企图修改常量的数据成员:但构造函数和析构函数对这个规则例外,它们从不定义为常量成员,但可被常量对象调用(被自动调用)。它们也能给常量的数据成员赋值,除非数据成员本身是常量。
const成员函数和const对象
const int i=1 ;
同样,也可以定义常量对象,假定有一个类classA,定义该类的常量对象的方法为:
const classA a(2);
为了确保const对象的数据成员不会被改变,在C++中,const对象只能调用const成员函数。如果一个成员函数实际上没有对数据成员作任何形式的修改,但是它没有被const关键字限定的,也不能被常量对象调用。