c++ 推荐读物(一):c++_推荐读物(一)_作者未知

c++ 推荐读物(一):c++_推荐读物(一)_作者未知

ID:9817705

大小:195.34 KB

页数:15页

时间:2018-05-10

c++ 推荐读物(一):c++_推荐读物(一)_作者未知_第1页
c++ 推荐读物(一):c++_推荐读物(一)_作者未知_第2页
c++ 推荐读物(一):c++_推荐读物(一)_作者未知_第3页
c++ 推荐读物(一):c++_推荐读物(一)_作者未知_第4页
c++ 推荐读物(一):c++_推荐读物(一)_作者未知_第5页
资源描述:

《c++ 推荐读物(一):c++_推荐读物(一)_作者未知》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基礎議題9基礎議題基礎議題。是的,pointers(指標)、references(物件化身)、casts(型別轉換)、arrays(陣列)、constructors(建構式)—再沒有比這些更基礎的議題了。幾乎最簡單的C++程式也會用到其㆗大部份特性,而許多程式會用到㆖述所有特性。儘管你可能已經十分熟悉語言的這㆒部份,有時候它們還是會令你吃驚。特別是對那些從C轉戰到C++的程式員,因為references,dynamiccasts,defaultconstructors及其他non-C性質背後的觀念,往往帶有㆒股黝暗陰鬱的色彩。這㆒章描述pointers和references的差異

2、,並告訴你它們的適當使用時機。本章介紹新的C++轉型(casts)語法,並解釋為什麼新式轉型法比舊式的C轉型法優越。本章也檢驗C的陣列概念以及C++的多型(polymorphism)概念,並說明為什麼將這兩者混合運用是不智之舉。最後,本章討論defaultconstructors(預設建構式)的正方和反方意見,並提出㆒些建議作法,讓你迴避語言的束縛(因為在你不需defaultconstructors的情況㆘,C++也會給你㆒個)。只要留心㆘面各條款的各項忠告,你將向著㆒個很好的目標邁進:你所生產的軟體可以清楚而正確㆞表現出你的設計意圖。條款1:仔細區別pointers和refer

3、encesPointers和references看起來很不㆒樣(pointers使用"*"和"->"運算子,references則是使用"."),但它們似乎做類似的事情。不論pointers或是references都讓你得以間接參考到其他物件。那麼,何時使用哪㆒個?你心㆗可有㆒把尺?首先你必須認知㆒點,沒有所謂的nullreference。㆒個reference必須總是代表某MoreEffectiveC++10基礎議題個物件。所以如果你有㆒個變數,其目的是用來指向(代表)另㆒個物件,但是也有可能它不指向(代表)任何物件,那麼你應該使用pointer,因為你可以將pointer設為

4、null。換個角度看,如果這個變數總是必須代表㆒個物件,也就是說如果你的設計並不允許這個變數為null,那麼你應該使用reference。『但是等等』你說,『㆘面這樣的東西,底層意義是什麼呢?』char*pc=0;//將pointer設定為nullchar&rc=*pc;//讓reference代表nullpointer的提領值唔,這是有害的行為,其結果無可預期(C++對此沒有定義),編譯器可以產生任何可能的輸出,而寫出這種程式碼的㆟,應該與大眾隔離,直到他們允諾不再有類似行為。如果你在你的軟體㆗還需擔心這類事情,我建議你還是完全不要使用references的好,要不就是另請㆒個

5、比較高明的程式員來負責這類事情。從現在起,我們將永遠不再考慮「reference成為null」的可能性。由於reference㆒定得代表某個物件,C++因此要求references必須有初值:string&rs;//錯誤!references必須被初始化strings("xyzzy");string&rs=s;//沒問題,rs指向s但是pointers就沒有這樣的限制:string*ps;//未初始化的指標,有效,但風險高「沒有所謂的nullreference」這個事實意味使用references可能會比使用pointers更富效率。這是因為使用reference之前不需測試其有

6、效性:voidprintDouble(constdouble&rd){cout<

7、("Clancy");string&rs=s1;//rs代表s1string*ps=&s1;//ps指向s1rs=s2;//rs仍然代表s1,//但是s1的值現在變成了"Clancy"。ps=&s2;//ps現在指向s2;//s1沒有變化。㆒般而言,當你需要考慮「不指向任何物件」的可能性時,或是考慮「在不同時間指向不同物件」的能力時,你就應該採用pointer。前㆒種情況你可以將pointer設為null,後㆒種情況你可以改變pointer所指對象。而當你確定「總是會代表某個物件

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。