在C++中虽然使用了许多手段去增加数据的安全性,但是有些数据是却是需要共享的,所以这些共享的数据不免便破坏了数据的安全性。于是为了解决这样的情况,于是便出现了常类型。常类型的引入,既保证了数据的共享性又保证了数据的安全性。所谓的常类型就是以const关键字修饰的类型。
C++中的常类型包括常引用、常对象、常对象成员。其中的常对象成员又包括常数据成员和常成员函数。
常引用
一、定义
const 类型 &引用名
例如:
int a=10;
const int& b=a; //这就是一个常引用
解析:
b是一个常引用,所以b的值不能被修改,也就是说,b所引用的对象在整个生命周期内必须是a。虽然不可以修改b的值,但是可以修改a的值,从而间接的达到修改b的目的。
常对象
所谓的常对象就是在声明对象时,在对象的前面加上const关键字。
一、定义
const 类名 对象名(参数表);
例如:
const Date d(2019,3,6);
这就是一个常对象。
二、注意事项
(1)常对象必须要初始化。
(1)常对象的数据成员在整个生命这周期内不能修改。
(3)常对象只能调用常成员函数。
常对象成员
常对象成员包括常数据成员和常成员函数。
一、常数据成员
(1)定义
在定义数据成员时冠以关键字const,就是常数据成员。
(2)注意事项
- 如果一个类中定义了常数据成员,那么如果要对其初始化,就必须使用初始化列表进行初始化。
- 常数据成员初始化后,在整个生命周期内不能被改变。
二、常成员函数
(1)定义
在成员函数后面加上关键字const就是常成员函数。
返回值 函数名(参数表)const
列如:
int func(int x,int y) const;
这就是一个常成员函数。
(2)注意事项
(1)声明和定义时都必须加上const关键字,调用时不需要。
普通成员函数与常成员函数的访问特性的比较
普通数据成员 | 常数据成员 | 常对象的数据成员 | |
---|---|---|---|
普通成员函数 | 可以访问和修改 | 可以访问但不可修改 | 不可访问不可修改 |
常成员函数 | 可以访问但不可修改 | 可以访问但不可修改 | 可以访问但不可修改 |
注意:
(1)常成员函数不可调用普通成员函数
(2)常对象只能调用常成员函数。