c++ const 允許指定一個語義約束,編譯器會強制實施這個約束,允許程序員告訴編譯器某個值是保持不變的。如果編程中確實某個值保持不變,就應該明確使用const,這樣能獲得編譯器的幫助。
const修飾函數參數
傳遞過來的參數在函數內不可以改變。
void testModifyConst(const int _x) { _x=5; //編譯出錯}const 修飾成員函數
(1)、const修飾的成員函數不能修改任何成員變量(mutable修飾除外) (2)、const成員函數不能調用非const成員函數。
/#include <iostream>using namespace std;class Point{public :Point(int _x):x(_x){}void testConstFunction(int _x) const{ //錯誤,在const成員函數中,不能修改任何類成員變量 x=_x; //錯誤,const成員函數不能調用非onst成員函數,因為非const成員函數可以會修改成員變量 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)只有一個const,如果const位于*左側,表示指針所指數據是常量,不能通過解引用修改該數據;指針本身是變量,可以指向其他的內存單元。 (2)只有一個const,如果const位于*右側,表示指針本身是常量,不能指向其他內存地址;指針所指的數據可以通過解引用修改。 (3)兩個const,*左右各一個,表示指針和指針所指數據都不能修改。 - 參考 http://www.cnblogs.com/xudong-bupt/p/3509567.html
新聞熱點
疑難解答
圖片精選