一:常对象:Time const t1(12,23,23);
其中所有的值不能被修改。通过该对象只能调用它的常成员函数,而不能调用它的普通成员函数。以防普通成员函数会修改数据成员的值。但如果一定要修改常对象数据成员的值,可以将该数据成员声明为mutable,如:
mutable int count;//把count声明为可变的数据成员,这样就可以用生命为const的成员函数改变它的值。
二:常数据成员:
只能通过其构造函数的参数初始化列表对常数据成员进行初始化。
三:常成员函数:
只能引用本类中的成员,而不能修改它们的值。一般格式为:void get_time() const;
在声明和定义时必须要有const关键字,在调用时可以不加const关键字。
四:指向对象的常指针:
Time *const p1=&t1;
五:指向常对象的指针变量:
const Time * p=&t1;
这两个的用法与常量指针和指针常量的用法是类似的。
注意:如果一个对象已被声明为常对象,只能用指向常对象的指针变量指向它,而不能用指向非const型对象的指针变量指向它。
当希望在调用函数时对象的值不被修改,就应该把形参定义为指向常对象的指针变量,同时用对象的地址做实参。
当直接用对象名作为形参和实参时,在函数中修改形参的值,但不会改变实参的值。
在C++面向对象设计中,经常用常指针和常引用做函数参数,可以保证数据安全并能节省空间。