常引用,const CString ,引用的效率

2022-03-23 21:44:22 字數 1293 閱讀 3051

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.乙個常物件只能呼叫它的常成員函式,是常物件唯一的對外介面方...