c++的興起,給一些形上學或者一知半解的偽物件導向程式設計師,提供了諸多口實。致使他們在日常的程式設計中,瘋狂的使用物件,常使我不寒而慄。上帝要毀滅乙個人之前,總是先讓他瘋狂。
c++中,琳琅滿目的書籍,也不遺餘力的如此吹捧。可是事實證明,到目前為止,我們國家還沒有任何一位高人寫出任何一本令我嘆為觀止的c++教程,我不得不感慨萬分。顯然,每個接受c++物件導向思想的人,都應該清楚,所謂物件導向,絕對不是要面向乙個矮胖的資料塊,而是要用抽象的思維去建立乙個幾乎能夠媲美現實世界的程式架構。
我們還是回到問題的本身。
對於函式中引數的傳遞來說,我確定一定以及肯定地認為,只要你無意使傳入物件返回任何結果,你就應該將它宣告為常引用。
什麼叫常引用?很多人的腦袋開始像飢腸轆轆的肚子一樣,嘰嘰咕咕的叫起來。
還是得先看看引用吧。
c++決定,任何人,任何時候,可以給乙個已知的物件(或者變數)再起乙個名字----這就是引用。表示式可以是這樣:
int i = 9;
int& ii = i;
cstring str(「idealsoft」);
cstring& stralias = str;
經常猶抱琵琶半遮面的引用,為它的粗心付出了代價。那個取位址的操作符「&」,很不情願的站在了別名(alias)的左邊,雖然它的心還在右邊,雖然它還是在取用右邊人物的位址,是的,是這樣的,這就是引用,實質上就是將乙個現有的位址賦給另外乙個常位址。
char* const p = 「idealsoft」;
const char* const p = 「idealsoft」;
這是什麼妖怪?我曾經似乎在以前的const詳解裡邊說過,這種指標在程式設計的時候基本上沒有用武之地。那它到底是什麼?其實,它就是乙個常引用,就像是水中的月亮,你只能看,卻永遠也別指望碰到它。
好,我們就來看看水中的月亮。
print(const cstring& str) //驕傲的水中之月
printf(「i』m just %s/n」, str); //曾經我問過,為什麼printf能夠列印cstring?
int main()
cstring str(「idealsoft」);
print(str);
我們為什麼要用常引用?而不直接用c++「標榜」的物件,或者其它?顯然,我們已經知道引用就相當於乙個不可變的指標,在引數傳遞的時候,完全不必將整個物件壓棧,而僅需壓入乙個指標,你可以想象乙個充斥著一望無垠物件的程式,它的效率將會怎樣的不堪入目。常引用則同時避免了,我們的引數被惡意的篡改。
列印之後,水中之月依然冷豔而一塵不染,在以後的日子裡,想必,你也會像我一樣,立即決定非她不娶並決定和她廝守終身。
常引用,const CString ,引用的效率
c 的興起,給一些形上學或者一知半解的偽物件導向程式設計師,提供了諸多口實。致使他們在日常的程式設計中,瘋狂的使用物件,常使我不寒而慄。上帝要毀滅乙個人之前,總是先讓他瘋狂。c 中,琳琅滿目的書籍,也不遺餘力的如此吹捧。可是事實證明,到目前為止,我們國家還沒有任何一位高人寫出任何一本令我嘆為觀止的c...
常引用(const引用)
普通引用 int a 10 int b a b可以修改a 常引用 用const修飾就是常引用,常引用初始化有兩種情況 1 用變數 初始化 常引用 2 用 字面量 初始化 常引用 const int y2 40 常引用的知識架構 void main01 2 用 字面量 初始化 常引用 system p...
常物件,常成員函式,常引用
宣告顯示 const 型別說明符 物件名 常物件的資料成員值在物件的整個生存期間不能被改變,即就是,常物件必須進行初始化,而且不能被更新。宣告形式 型別說明符 函式名 參數列 const 注意 1.在函式定義部分也需要帶const關鍵字。2.乙個常物件只能呼叫它的常成員函式,是常物件唯一的對外介面方...