每日一笔记之1:静态成员函数

对于类的成员函数而言,非静态成员函数属于类的具体对象,而静态成员函数属于该类,对于该类的所有对象是公有的。静态成员函数的调用不需要创建该类的对象。而非静态成员函数的调用必须先建立该类。

常成员函数:

int GetX() const; //声明常成员函数

常成员函数含义是通过该函数只能读取同一类中的数据成员的值,而不能修改它。
1.常成员函数不能更新对象的数据成员
2.当一个对象被声明为常对象,则不能通过该对象调用该类中的非const成员函数
3.非常量成员函数不能被常量成员对象调用,因为它可能企图修改常量的数据成员:但构造函数析构函数对这个规则例外,它们从不定义为常量成员,但可被常量对象调用(被自动调用)。它们也能给常量的数据成员赋值,除非数据成员本身是常量。
const成员函数和const对象
实际上,const成员函数还有另外一项作用,即常量对象相关。对于内置的数据类型,我们可以定义它们的常量,用户自定义的类也一样,可以定义它们的常量对象。例如,定义一个整型常量的方法为:
const int i=1 ;
同样,也可以定义常量对象,假定有一个类classA,定义该类的常量对象的方法为:
const classA a(2);
这里,a是类classA的一个const对象,"2"传给它的构造函数参数。const对象的数据成员在对象生存期内不能改变。但是,如何保证该类的数据成员不被改变呢?
为了确保const对象的数据成员不会被改变,在C++中,const对象只能调用const成员函数。如果一个成员函数实际上没有对数据成员作任何形式的修改,但是它没有被const关键字限定的,也不能被常量对象调用。
原文地址:https://www.cnblogs.com/llxbl/p/4923893.html