回憶C++

內聯函數

內聯函數適用於函數較爲短小的狀況。編程

內聯函數存在的意義是:提升程序運行效率。編程語言

內聯函數的缺點:若是一個內聯函數太長且頻繁調用,會致使生成的可執行程序較大。函數

靜態連接庫會被嵌入到生成的可執行程序中,若是不少程序都依賴同一個靜態連接庫,那麼應該把這個靜態連接庫作成動態連接庫。這樣就可以減小程序所佔內存。設計

靜態連接庫比動態連接庫效率更高,且不存在依賴問題。若是動態連接庫有不一樣的版本,那麼必須爲動態連接庫引入版本管理才能讓兩個程序正常運行。排序

實際上,現代編譯器已經自做主張地在時間和空間之間找到了平衡:即使你聲明瞭一個內聯函數,這個函數不必定真的會發生內聯操做;即使一個函數沒有聲明爲內聯函數,這個函數也有可能變成內聯。一個函數是否內聯,是由編譯器決定的。繼承

對於類,若是把函數實現寫在類的內部,那麼這個函數默認會被加上一個inline,可是實際上它不必定會發生內聯。內存

C++最佳實踐

把C++當作Java來寫,全部的文件都是.hpp文件。每一個hpp文件中包含多個類定義,把類的函數聲明跟函數實現放在一塊兒。編譯器

不要使用靜態函數和靜態成員變量,而應該使用單例。編譯

函數默認參數

Python達到了靈活性的極致,Python的默認參數是無序的,C++的默認參數是有序的。
Java徹底放棄了函數默認參數,真正作到了一個函數只作一件事。可是Java中包含大量的函數重載,一般會提供一個大而全的函數,而後重載一堆函數去調用這個大而全的函數。
C++中的函數默認參數跟Python相比略微單薄,可是必定程度上可以減小函數重載的個數。
在設計C++時,須要權衡函數參數的優先級,合理對函數參數進行排序。效率

函數重載

C語言不支持函數重載,C++支持函數重載。
C++函數重載的原理是把函數的名字用它的參數類型進行命名,例如int f(int,int)會變成f_int_int。
函數重載只跟入參有關,跟返回值無關。
C++的函數和C語言的函數編譯以後的名字是不同的,這是兩者的惟一區別。
extern 「C」這種寫法就是爲C++函數重載而生的。

C++自己就是一個複雜的程序

若是把編程語言比做人,C++是一個英雄。它嘗試了不少別人不敢嘗試的東西,在艱難的假設之中砥礪前行、永不言棄。 C++勇敢面對各類假設:必須有運算符重載,必須有多繼承等。 C++自己就是一個應用程序。

相關文章
相關標籤/搜索