关键字 const 是一个限定符,它告诉编译器将该变量设置为只读。
const修饰的准则是先左后有
- 使用const定义变量时必须进行初始化,不能先定义再通过赋值语句进行赋值
- const 修饰变量、指针、函数
-
- 修饰变量,表示常量
-
- 修饰指针,则指针指向不可变,指向的值可以变
-
- 修饰类函数,表示类成员变量不可变
const修饰类函数
在类中将成员函数修饰为const表明在该函数体内, 不能修改对象的数据成员而且不能调用非const函数。
为什么不能调用非const函数?因为非const函数可能修改数据成员,const成员函数是不能修改数据成员的,所以在const成员函数内只能调用const函数。
#include <iostream>
using namespace std;
class A{
private:
int i;
public:
void set(int n){ //set函数需要设置i的值,所以不能声明为const
i = n;
}
int get() const{ //get函数返回i的值,不需要对i进行修改,则可以用const修饰。防止在函数体内对i进行修改。
return i;
}
};
在自定义map的key的比较函数时,函数需要用到const修饰
struct cmp_key {
bool operator()(const cv::Vec4b& v1, const cv::Vec4b& v2) const {
for (int i = 0; i < 4; ++i) {
if (v1[i] < v2[i]) return true;
else if (v1[i] > v2[i]) return false;
}
return false;
}
};