亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
"常量正確"(const-correct)是個C++編程的概念嗎?
[打印本頁]
作者:
sampher
時間:
2013-11-06 19:54
標(biāo)題:
"常量正確"(const-correct)是個C++編程的概念嗎?
我看到<<com本質(zhì)論>>這本書里面介紹"墊片類"shim class的概念時說道:
"大部分com api并不是常量正確的(const-correct)"
請問所謂的const-correct是個C++的概念? 還是某種設(shè)計模式里面的概念呢?
作者:
myworkstation
時間:
2013-11-06 20:58
回復(fù)
1#
sampher
這主要是個C/C++的概念,廣義的說就是在合適的地方應(yīng)該使用const,比如說定義一個字符串指針const char * str="hello";此處使用const是必然的,因為這個字符串指針指向的內(nèi)容必然不可更改,再比如說函數(shù)參數(shù),int compare(const char* a,const char* b);在函數(shù)中不存在對參數(shù)內(nèi)容的更改所以應(yīng)該使用const修飾,這樣所有潛在的修改了不應(yīng)該修改的內(nèi)容的錯誤都會提前到編譯期發(fā)現(xiàn)。常量正確更具體的是個編譯期問題,而不是運行期問題。這個問題到了C++中又更深入一層,可以對class的方法進行限定,比如說某個類Test有方法:int get() const;這表示這個方法不會修改對象本身的內(nèi)容,當(dāng)對象是const對象時可以調(diào)用這個方法,比如說const Test& a;此時a.get()調(diào)用的是沒有問題的,如果get方法沒有const修飾將不能進行調(diào)用,由于const是編譯期問題所以一定要注意總是可以通過類型轉(zhuǎn)換繞過這個限止。const用作函數(shù)或方法參數(shù)時其有更深一層的意義,它可以完成對rvalue值的匹配,由于lvalue總是可以轉(zhuǎn)換到rvalue(絕大多數(shù)情況下是隱式轉(zhuǎn)換),所以參數(shù)為const類型的函數(shù)或方法適應(yīng)性更強,比如說定義copy構(gòu)造函數(shù),操作符重載以及自定義轉(zhuǎn)換等場景下都應(yīng)該使用const引用作為參數(shù)?傊A空_是具有多方面含義的,既有聲明和定義對象時readonly的表示,也有rvalue的適配。
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2