一、什麼是crtp
奇特的模板遞迴模式(curiously recurring template pattern)即將派生類本身作為模板引數傳遞給基類。
template
class baset{};
class d : public baset{};
類d是乙個非依賴型基類,不是模板。
(1)被繼承的類模板(baset)的模板引數(t)可以是模板引數,
template
class baset{};
template
class d : public baset>{};
(2)被繼承的類模板(baset)的模板引數(t)可以是模板
typenameclass t>
class baset{};
template
class d : public baset{};
二、crtp的乙個簡單應用就是記錄某個類物件構造的總個數。
#include
#include
template
class objectcounter//宣告為protected,防止生成物件,限定只能被繼承
objectcounter(constobjectcounter& )
~objectcounter()
public:
staticsize_t getcount()//作為靜態函式,類方法
模板與繼承之藝術 空基類優化
1 概念 c 中有 空 類的概念,這就意味著在執行期間其內部不好任何記憶體。只包含型別的成員函式 非虛成員函式和靜態資料成員的類為空類。非靜態的資料成員,虛函式和虛基類則在執行時期消耗儲存空間。2 空基類優化如下 include using namespace std class empty cla...
C 模板 函式模板 類模板 模板與繼承
c 提供一種模板的機制來減少 重複。比如 對於同一樣函式使用不同的資料型別,int,double,char等。c 模板屬於 元程式設計 的範疇。1.支援不同資料型別的函式過載 cpp view plain copy include using namespace std int square int...
C 模板 函式模板 類模板 模板與繼承
2013 09 13 23 09 28054人閱讀收藏 舉報 c c stl 泛型程式設計 64 目錄 c 提供一種模板的機制來減少 重複。比如 對於同一樣函式使用不同的資料型別,int,double,char等。c 模板屬於 元程式設計 的範疇。1.支援不同資料型別的函式過載 cpp view p...