常数据成员
引言:类存在的目的之一就是为了实现封装性,但是实际上经常使用公有函数接口去修改其数据成员,为了保证类中可以有一些数据成员绝对不会被修改,所以创造了常数据成员
特点:
1.在定义时要在头部加const关键字
2.初始化操作只能在构造函数的初始化列表中进行
3.无论是普通成员函数还是常成员函数都无法修改其值
常成员函数
引言:为了实现这样一种函数:对于其调用的数据成员只能读取,而不能修改。所以创造了常成员函数
特点:
1.在声明和定义时都要在尾部加const关键字
2.其只能读取数据成员,而不能修改
是否可以修改 | 一般成员函数 | 常成员函数 |
---|---|---|
一般数据成员 | 是 | 否 |
常数据成员 | 否 | 否 |
3。常对象只能调用常成员函数
#include<iostream>
using namespace std;
class Point
{int x,y;
public:
Point(int a,int b):x(a),y(b){}
fun(){return x+y}
fun()const{return x-y}
}
void main
{const Point p1(1,1);
Point p2(1,1);
cout<<p1.fun<<endl;
cout<<p2.fun<<endl;
}
注:上面的例子一方面说明了常对象只能调用常成员函数
另一方面说明了const可以用于区分重载函数
4.常成员函数只能调用常成员函数,防止误改数据成员