相比較c語言,c++增加了過載,內聯,const和 virtual 四種新機制。其中,過載和內聯既可用於全域性函式,也可用於類的成員函式。 const 和virtual機制僅用於類的成員函式。
函式過載:編譯器根據引數為每個過載函式產生不同的內部識別符號(不同編譯器產生的內部識別符號不同)。
c++呼叫c函式 --->用extern "c"
過載與覆蓋:
成員函式被過載的特徵:
1.相同的作用域(同乙個類中)。
2.函式名相同
3.引數不同。
4.virtual關鍵字可有可無。
覆蓋是指派生類函式覆蓋基類函式,特徵是:
1.不同作用域(派生類與基類)
2.函式名相同
3.引數相同
4.基類必須有virtual。隱藏
隱藏是指派生類中的函式隱藏了基類中的函式(只要不是前兩種的就是隱藏,隱藏比較亂)。
1.派生類與基類函式名相同,引數不同,不論有無virtual,都算隱藏。
2.派生類與基類函式名相同,引數相同,基類無virtual,->基類被隱藏。
引數的預設值:
1.引數的預設值只能出現在宣告中,不能出現在定義中。
2.多個引數時,只能從後向前挨個預設(不能中間中)
運算子的過載規則:
記住: = () [ ]-> 只能過載為成員函式(小考點)
內聯:c++ 語言支援函式內聯,其目的是為了提高函式的執行效率(速度)
在 c程式中,可以用巨集**提高執行效率。巨集**本身不是函式,但使用起來象函 數。 預處理器用複製巨集**的方式代替函式呼叫, 省去了引數壓棧、 生成組合語言的 程式中,可以用巨集**提高執行效率。巨集**本身不是函式,但使用起來象函 數。 預處理器用複製巨集**的方式代替函式呼叫, 省去了引數壓棧、 生成組合語言的 call 行 呼叫、返回引數、執行 n r et ur n 等過程,從而提高了速度。使用巨集**最大的缺點是容 易出錯,預處理器在複製巨集**時常常產生意想不到的邊際效應。
在呼叫內聯函式時,編譯器首先檢查呼叫是否正確(型別檢查,自動型別轉換),如果正確,就替換函式呼叫。(預處理器不會進行安全檢查或自動型別轉換)
inline 必須與函式定義放在一起。
慎用內聯
讀書筆記 高質量C C程式設計指南 目錄
序 最近痛下決心要好好學習下c和c 以為即將來臨的求職做點準備,在網上搜野指標的問題時看到了 高質量c c程式設計指南 對於我這種想從事嵌入式開發的人來說,猶如收穫到一本程式設計的bible似的。此文對c和c 程式設計的風格及注意事項進行了精妙的分析,集合了thinking in c effecti...
高質量C C 程式設計指南讀書筆記(2)
7.2.1用malloc或者new申請記憶體之後,應該立即檢查指標值是否為 null。防止使用指標值為null的記憶體。7.2.3動態記憶體的申請與釋放必須配對,防止記憶體洩漏。7.2.4用free或delete釋放了記憶體之後,立即將指標設定為null,防止 產生 野指標 7.7野指標的成因 1 ...
《高質量C C程式設計指南》讀書筆記三
每個類只有乙個析構函式和乙個賦值函式。可有多個建構函式。把物件的初始化放在建構函式中,把清除工作放在析構函式中。然後編譯器會自動進行初始化和清除工作。建構函式和析構函式沒有返回值型別。9.2建構函式的初始化列表 位於函式引數表之後,之前,類的const常量只能在初始化列表中初始化,9.3建構函式的次...