const 出现在*左边指const data,出现在*右边指const pointer
char greeting[] = “Hello”; char *p = greeting; //non-const pointer, non-const data const char *p = greeting; //non-const pointer, const data char *const p = greeting; //const pointer, non-const data const char *const p = greeting //const pointer, const data
声明常量迭代器和所指物是常量的迭代器
std::vectorvec; const std::vector ::iterator iter = vec.begin(); //iter的作用像个T *const *iter = 10 //ok. 改变iter所指物 ++iter; //error. iter是const const std::vector ::const_iterator cIter = vec.begin(); //cIter的作用像个const T * *cIter = 10 //error. *cIter是const ++cIter; //error. 改变cIter
将返回值声明为const,避免它被当作左值,成员函数声明为const,确认该成员函数可作用于const 对象
class Rational {…};
const Rational::operator *(const Rational *lhs, const Rational *rhs) const 参数声明为const,避免它修改
成员函数声明为const,确认该成员函数可作用于const 对象(const对象只能调用const 成员)