Effective C++ 讀書筆記(0-4)

來源:互聯網
上載者:User

一年前讀此書,在書上亂寫亂畫,自認為對C++懂了。現在正式從事編碼工作,看了別人的代碼才發現自己其實並沒有懂得很多,因此,重新拾起之前的書,認認真真開始記錄筆記。

0--序言

四個轉型運算子:比如static_cast<int>(32.12)
const_cast:將對象或指標的常數型轉型掉
dynamic_cast:用來執行"安全的向下轉型動作"
reinterpret_cast:轉型的結果取決於編譯器
static_cast:沒有其他合適的轉型運算子可用,就用這個,和傳統轉型運算子最接近

Item 1 -- 盡量以const和inline取代#define

用const的好處是,調試時,可以直接擷取變數,而非定義的數字,這個在使用gdb跟蹤代碼的時候很有用,比如#define NUM 123;如果在gdb中print NUM,會出現NUM找不到符號表的問題,這樣在複雜運算式中出現NUM進行watch的時候要回去找NUM的具體值很鬱悶。

使用const不僅如此,其不允許改動的語義才是其存在的精華,
常量指標和指標常量很容易讓人弄混,來再記一遍,星號在中間,左定內容右定針。
const char *p;    char const* p都表明p指向的內容不能變
char * const p 則表明指標不能變
再bt一點的就是牽扯到typedef了,typedef能夠破壞const的語義,參考下面的連結
http://hi.baidu.com/%C6%AE%D4%DA%B1%B1%BE%A9/blog/item/92e3554e22307d0db2de0540.html
http://hi.baidu.com/xiaoshumuzi/blog/item/34ff22386487eaf8b311c716.html

拋棄#define使用inline的原因就是類似#define max(a,b) ((a)>(b)?(a):(b)) 這種寫法除了使用無數括弧很bt之外,max(++a,b)這個簡單的運算式便可輕而易舉廢掉程式員的本意,這點足以放棄#define

Item 2 -- 盡量以<iostrem>取代<stdio.h>

EC(Effective c++)給出Item2的理由,cin/cout型別安全,比如Rational r; cout<<r在stdio.h中是無法想象的。當然,Rational要針對<<進行支援,有關寫operator <<又是一個要討論的Item,這裡事先給出正確寫法
class Rational{
    friend ostream& operator<<(ostream&s, const Rational& r)
}

其實對於我這種學習的時候就使用cin/cout的人來講,現在倒是感覺stdio.h這種東東很好玩,裡面牽扯到fopen、fput、fwrite等等底層IO介面,深入研究也是對電腦IO更好的瞭解

Item 3 --  盡量以new和delete取代malloc和free

new的過程:申請記憶體(也即malloc的作用),調用建構函式,返回對象指標(後面講到operator new ,placement new都是基於這個基本知識)

另外,new和delete對應,malloc和free對應這個也是常識了,但是為啥呢?EC裡面講到,如果混用會導致不可預料的錯誤。

Item 4 -- 盡量使用C++風格的注釋形式

其實就是相對/**/這種注釋,多用用//,而//在VS2005以及Eclipse下面都有快速鍵,VS2005是Ctrl+K,C(按住Ctrl,先後按K和C)取消是Ctrl+K,U,Eclipse則方便的多,只用Ctrl+/即可

說到注釋,不能不提doxygen,最近也在看原始碼,抽空得研究下,學習一下注釋規範。簡單搜尋下,可以關注下面連結:
http://blog.163.com/jallyx/blog/static/5726580020097611042993/
http://zsxxsz.javaeye.com/blog/403539
http://www.lupaworld.com/action_viewstutorial_itemid_3735.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.