1.常对象、常对象成员(常数据成员、常成员函数)
1.1 常对象
常对象必须在定义对象时就指定对象为常对象,常对象中的数据成员为常变量且必须要有初始值。如
Time const t1(12,34,56);
这样的话,在所有的场合中,对象t1中的所有数据成员的值都不能被修改。凡希望保证数据成员不被改变的对象,可以声明为常对象。
定义常对象的一般形式为
类名 const 对象名(实参列表);
也可以把const写在最左面
const 类名 对象名(实参列表);
1.2 常数据成员
其作用和用法与一般常变量相似,用关键字const来声明常数据成员。常数据成员的值是不能改变的。只能通过构造函数的参数初始化表对常数据成员进行初始化。
在类体中声明常数据成员:
- const int num;//声明hour为常数据成员
在类外定义构造函数
- Student::Student(int n,float s):num(n),score(s){} //通过参数初始化表对常数据成员num和score初始化
1.3 常成员函数
如果将成员函数声明为常成员函数,则只能引用本类中的数据成员,而不能修改它们。
注意:常对象只能引用常成员函数
常成员函数的定义形式:
void Print() const; //注意const的位置在函数名和花括号之后
const是函数类型的一部分,在声明函数和定义函数都要有const关键字,在调用时不必加const。
常成员函数可以引用const数据成员,也可以引用非const数据成员,但是都不能修改他们;
不是常成员函数的函数可以调用const数据成员,但是不能修改它们,也可以调用非const数据成员,并且可以修改它们。
常对象只能调用常成员函数,非常对象会优先调用非常成员函数,如果没有 则会调用常成员函数