为了是数据可以被共享但是又不会被随意的修改,我们使用const来进行数据保护。
1.用const修饰的数据成员称为常数据成员
2.用const修饰的成员函数称为常成员函数
3.用const修饰的对象叫常对象
(1)常数据成员
两种声名方式:
1.const int x;
2.int const x;
注意:
(1)任意函数不能对常数据成员进行赋值。
(2) 构造函数队常数据成员进行初始化时只能通过初始化列表进行。
(3如果类有多个构造函数,那么每个构造函数都要对常数据成员进行初始化,并且一定要进行赋值
(2)用const修饰的成员函数称为常成员函数
声明:<类型标志符>函数名 (参数表)const
说明:
(1)声明和定义都需要有const关键字,在调用时就不需要,并且const可以作为对重载函数的区分。
(2)常成员函数只能“引用”本类中的数据,但是不可以“修改”。(多用于输出)
注意:
(1)常成员函数只能调用常数据成员,但是常数据成员也可以被非常成员函数调用,但是常数据成员都不能被“修改”。
常成员函数的“安全性”比常数据成员更好,因为常成员函数只能调用常成员数据,而常数据成员可以被两种成员函数调用。
(3)用const修饰的定义对象成为常对象
声明:
类名 const 对象名[(实参列表)]
const 类名 对象名[(实参列表)]
例如: BOX const box1(5,10,12);
注意:(1)类似常数据成员,常对象需要在定义时被初始化,并且只能调用常成员函数,但是非常成员函数可以被非常对象调用。
所以常对象是安全性最高的。
常对象中的成员函数不一定全是常成员函数可以有普通成员函数也可以有常成员函数。