所以,在編寫c++程式中,我們可以巧妙的應用const關鍵宣告一些不被用作修改的變數、指標等。
如:const int ci=1024;// 宣告整型常量ci為1024,記住申明常量物件的同時必須初始化
const int &ri=ci;// 引用 及其對應的物件都是常量 (ri繫結在ci上,是ci的別名),此語句正確
int &r2=ci;//錯誤 ,試圖讓乙個非常量引用指向另乙個常量引用
關於const關鍵的詳細用法請參考c++primer 第54-58頁,此文緊述乙個const在函式定義時的用法:
知識點:c++允許用字面值初始化常量引用,而不能用const物件、字面值或者需要型別轉換的物件傳遞給普通的引用形參,所以在函式定義時,對與不被用作修改的物件,盡量使用常量引用。
如有以下函式:
string::size_type find_char(const string &str,char c,string::size_type &occurs) //引用返回測試
} }return postion;
}
函式用來查詢給定字元在字串中第二次出現的位置(同return返回),並以引用的形式返回此字元在此字串中出現的總次數(&occurs),我們將函式乙個引數宣告為引用常量,這樣在呼叫時可以直接傳遞字面值如下:string::size_type occurs=0;
string::size_type second_position=find_char(/*my_str*/"my name is zhaogang",'n',occurs);
若形參沒定義為常量引用,此呼叫會出現如下錯誤:
error c2664: 「find_char」: 不能將引數 1 從「const char [20]」轉換為「std::string &」
不過,如果實在不能將形參定義為const常量,這可以在呼叫前定義乙個string型別的變數,另其為字面值的副本,再把這個string物件傳遞給find_char函式。如:
string my_str="my name is zhaogang";
string::size_type second_position=find_char(my_str,'n',occurs);
學習記錄,僅供參考。
iBatis學習小記
1.注意sqlmap.config檔案的sqlmap資源的順序 由於ibatis在初始化時,會將所有的資源檔案,按配置的順序讀入,如果資源的順序錯了,會引發以下異常。this sql map does not contain an resultmap named codenode.codetype ...
STL學習小記
2009 05 09 17 04 387人閱讀收藏 舉報stl standard template libarary 主要提供了三類工具 容器container,迭代器iterato,演算法algorithm.stl提供了兩類容器 序列容器 以線性序列方式組織物件 關聯容器 用關聯的鍵把物件組織在一...
2013 9 5學習小記
今天是忙碌的一天,老師帶著我們複習了前面資料庫的知識,因為前邊學的不怎麼認真,拉下不少東西,感覺 人家複習我就在預習一樣。還好老師講的非常詳細,調理清晰明白 注意聽 最後還是弄明白了,在這真得跟姚洪波老師說聲 謝謝您,您辛苦了.資料庫的知識點 1.建立資料庫 2.建立表 3 用 對資料庫裡面的資料 ...