- 論壇徽章:
- 17
|
回復 1# sampher
這主要是個C/C++的概念,廣義的說就是在合適的地方應該使用const,比如說定義一個字符串指針const char * str="hello";此處使用const是必然的,因為這個字符串指針指向的內容必然不可更改,再比如說函數(shù)參數(shù),int compare(const char* a,const char* b);在函數(shù)中不存在對參數(shù)內容的更改所以應該使用const修飾,這樣所有潛在的修改了不應該修改的內容的錯誤都會提前到編譯期發(fā)現(xiàn)。常量正確更具體的是個編譯期問題,而不是運行期問題。這個問題到了C++中又更深入一層,可以對class的方法進行限定,比如說某個類Test有方法:int get() const;這表示這個方法不會修改對象本身的內容,當對象是const對象時可以調用這個方法,比如說const Test& a;此時a.get()調用的是沒有問題的,如果get方法沒有const修飾將不能進行調用,由于const是編譯期問題所以一定要注意總是可以通過類型轉換繞過這個限止。const用作函數(shù)或方法參數(shù)時其有更深一層的意義,它可以完成對rvalue值的匹配,由于lvalue總是可以轉換到rvalue(絕大多數(shù)情況下是隱式轉換),所以參數(shù)為const類型的函數(shù)或方法適應性更強,比如說定義copy構造函數(shù),操作符重載以及自定義轉換等場景下都應該使用const引用作為參數(shù)?傊A空_是具有多方面含義的,既有聲明和定義對象時readonly的表示,也有rvalue的適配。
|
|