const在星号左边表示被指物是常量,在星号右边说明指针自身是常量,在两边说明两者都是常量。
const vector::iterator iter类似const T* 即迭代器不可改变,所指之物可以改变。
vector::const_iterator 类似T* const 即迭代器可以改变,所指之物不可改变。
const在函数前,修饰返回值时,表示返回值是const的,可以防止手误打错为(a * b) = c;
const成员函数和非const成员函数可以重载,根据对象是不是const类型。
mutable可以释放掉non-static成员变量的bitwise constness约束(在const成员函数内也可改变)。
可以用non-const函数调用const函数以避免代码重复(可能大部分内容相同),需要做两次类型转换,先用static_const把*this转化为const类型,再用const_cast转化为非const类型。