常对象
常对象必须在定义对象时就指定对象为常对象。
常对象中的数据成员为常变量且必须要有初始值,如
定义常对象的一般形式为
类名 const 对象名(实参列表);
也可以把const写在最左面
const 类名 对象名(实参列表);
二者等价
如果一个对象被声明为常对象,则不能调用该对象的非const型的成员函数(除了由系统自动调用的隐式构造函数和析构函数)。
否则就会报错
这样做是为了方式非const型的成员函数修改常对象中的数据成员的值,因为const型的成员函数是不可以修改对象中的数据成员的值的(这个后面还会说到)。
那么,怎样才能引用常变量中的数据成员呢?很简单,我们只需要将该成员函数声明称const型的成员函数(常成员函数)即可。
有时在编程时有要求,一定要修改常对象成员中的某个数据成员的值(例如类中有一个用于计数的变量count,其值应当不能变化),
对该数据成员声明为mutable,如
=========================一个简单的示例程序1.1====================================
1.常数据成员
其作用和用法与一般常变量相似,用关键字const来声明常数据成员。常数据成员的值是不能改变的。
只能通过构造函数的参数初始化表对常数据成员进行初始化。
在类体中声明常数据成员
2.常成员函数
如果将成员函数声明为常成员函数,则只能引用本类中的数据成员,而不能修改它们。
注意:常对象只能引用常成员函数
常成员函数的定义形式:
常成员函数可以const数据成员,也可以引用非const数据成员,但是都不能修改他们;
不是常成员函数的函数可以调用const数据成员,但是不能修改它们,也可以调用非const数据成员,并且可以修改它们。
具体情况,如图1:

还要注意一下三点:
1.不要误认为常对象中的成员函数都是常成员函数,常对象只保证其所有数据成员的值不被修改。
2.如果在常对象中的成员函数未加const声明,则编译系统会把它当最非const成员函数处理。
3.还要注意,常成员函数不能调用另外一个非cosnt成员函数。
</div>