盡量以const,enum,inline,替換#define
我們無法使用#define建立乙個class專屬常量。因為#define不注重作用域。也不能提供任何的封裝性,也就是說沒有所謂的private #define這樣的東西。而const成員是可以被封裝的。
乙個const的位址是合法的,但取乙個enum的位址就不合法,而取define的位址通常也不合法。
有了const、enum和inline,我們對預處理的需求降低了,但並非完全消除。#include仍然是必需品,而#ifdef/#ifndef也繼續扮演控制編譯的重要角色。目前還不到預處理器全面隱退的時候。但你應該明確的給予它更長更頻繁的假期。
**對於單純常量,最好以const物件或enum替換#define。
對於形似函式的巨集,最好改用inline函式替換#define。**
盡可能使用const
const只是語言層面的限制,可以通過記憶體進行改變。
讀書筆記 1
從我第一次看到windows就對它那花花綠綠的外表所吸引,大學兩年過來,時間又讓我從另乙個角度重新認識的了這些美麗的。本學期開始圖形程式設計的學習,探索windows圖形系統,並對gdi api,directdraw api進行學習。之所以寫部落格,第 一 是想勉勵自己不斷學習,讓大家監督 第 二 ...
讀書筆記1
netstat p525 網路資訊服務是通過本地查詢,還是要連線到遠端資料庫 p527 網路配置檔案?服務資訊函式?linux下如何組網 p527 如何設定計算機的主機名 p528 套接字 第15章 套接字 套接字 p513,523 what 套接字 一種程序間通訊機制 不僅可以本地程序通訊,也可以...
讀書筆記 1
條款01 視c 為乙個語言聯邦 條款02 盡量以const,enum,inline替換 define 條款03 盡可能使用const 條款04 確定物件被使用前已先被初始化 條款05 了解c 默默編寫並呼叫哪些函式 什麼時候empty class不再是個empty class呢?當c 處理過它之後....