c++ const 允許指定一個(gè)語(yǔ)義約束,編譯器會(huì)強(qiáng)制實(shí)施這個(gè)約束,允許程序員告訴編譯器某個(gè)值是保持不變的。如果編程中確實(shí)某個(gè)值保持不變,就應(yīng)該明確使用const,這樣能獲得編譯器的幫助。
const修飾函數(shù)參數(shù)
傳遞過(guò)來(lái)的參數(shù)在函數(shù)內(nèi)不可以改變。
void testModifyConst(const int _x) { _x=5; //編譯出錯(cuò)}const 修飾成員函數(shù)
(1)、const修飾的成員函數(shù)不能修改任何成員變量(mutable修飾除外) (2)、const成員函數(shù)不能調(diào)用非const成員函數(shù)。
/#include <iostream>using namespace std;class Point{public :Point(int _x):x(_x){}void testConstFunction(int _x) const{ //錯(cuò)誤,在const成員函數(shù)中,不能修改任何類成員變量 x=_x; //錯(cuò)誤,const成員函數(shù)不能調(diào)用非onst成員函數(shù),因?yàn)榉莄onst成員函數(shù)可以會(huì)修改成員變量 modify_x(_x);}void modify_x(int _x){ x=_x;}int x;};修飾成員變量 using namespace std;int main(){ int a1=3; ///non-const data const int a2=a1; ///const data int * a3 = &a1; ///non-const data,non-const pointer const int * a4 = &a1; ///const data,non-const pointer int * const a5 = &a1; ///non-const data,const pointer int const * const a6 = &a1; ///const data,const pointer const int * const a7 = &a1; ///const data,const pointer return 0;}(1)只有一個(gè)const,如果const位于*左側(cè),表示指針?biāo)笖?shù)據(jù)是常量,不能通過(guò)解引用修改該數(shù)據(jù);指針本身是變量,可以指向其他的內(nèi)存單元。 (2)只有一個(gè)const,如果const位于*右側(cè),表示指針本身是常量,不能指向其他內(nèi)存地址;指針?biāo)傅臄?shù)據(jù)可以通過(guò)解引用修改。 (3)兩個(gè)const,*左右各一個(gè),表示指針和指針?biāo)笖?shù)據(jù)都不能修改。 - 參考 http://www.cnblogs.com/xudong-bupt/p/3509567.html
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注