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::vector vec;
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 成員)