1. const變量:const type v; 必須定義時初始化,不能修改其值。備注:關于const變量的作用域要特別注意,它是局部的,而默認的C++變量是全局的。通過加extern限制可以令const對象可以在全局被訪問。如代碼:(順便提一下static)
file1.cpp type v1;
const type v2; //now,v2 is a local variable.
extern const type v3;//now,v3 is a global variable. must add 'extern'~.
file2.cpp type v1; // error.redeclaration.
extern type v1; //ok.
type v2; //ok.but not equivalent to v2 in file1.cpp
const type v3; // ok.but not equivalent to v3 in file1.cpp
extern const type v3; //ok.equal to v3 in file1.cpp.
2. const引用:const type& v; 是指向const對象的引用。非const引用只能綁定到與該引用同類型的對象。而const引用則可以綁定到不同但相關的類型那個的對象和右值。
double dv = 1.0; const int &iv = dv; 編譯時等價于
int temp = dv; const int &iv = temp; //可以看出對iv的修改并不會影響dv的值
3.const與指針:(1) 指向const對象的指針: const type* v; 有時記作type const* v;可以修改指針,但不能直接通過該指針修改指針指向的對象。(可以通過定義非const指針指向該對象,從而修改其值)(2)const指針: type *const v;可以修改指針指向的對象,但不能修改指針本身。(3)指向const對象的const指針:const type *const v; (備注:typedef string * name; const name v; //v的類型是指向string類型的const指針。)
4.const與一般函數: (1) const type1 func(type2 v); 函數返回值為const; (2) type1 func(const type2 v);形參為const變量。因為形參不是引用,不修改實參的值,所以此時的const不起特別的作用;(3)type1 func(const type& v); 形參為const引用,不修改傳遞到形參的實參值。 指針時相同,不修改指針指向的對象的值。
5.const與類成員函數(常量成員函數):type func(type v) const;等價于type func(const *this,type v) const; 它是值this指針是指向const對象的指針,這個函數不改變調用該函數的對象。(備注:事實上是不可以顯示使用this指針作為形參的,但可以在函數體中顯示地使用this指針。)
6.const與迭代器:vector<type>::const_iterator it; const vector<type>::iterator iter; it指向的元素不能修改,iter指向的元素可以修改,但迭代器本身不能修改。
7.const與容器: const vector<type> vec; 需要注意此時定義的容器迭代器必須是const_iterator型。

文章來源:http://liyuxia-life.spaces.live.com/Blog/cns!DA1B364675ACF35!243.entry