一、概念引入
什麼叫遞迴模板模式呢?簡單的來說就是:派生類將本身作為模板引數傳遞給基類
//傳遞派生類型別
template
class curiousbase ;
template
class curioustemplate : public curiousbase;
//傳遞派生類本身:雙重模板引數的使用
template class derived>
class morecuriousbase ;
template
class morecurious : public morecuriousbase ;
二、舉例
#include
#include
#include
using namespace std;
//統計某類的物件個數的模板基類
template
class objectcounter
objectcounter(const objectcounter&)
~objectcounter()
public:
static size_t live()
private:
static size_t count;
};template
size_t objectcounter::count =0;
//結束
//使用模板基類
template
class mystring : public objectcounter>;
int main(int argc, char *argv){
mystrings1,s2;
mystringws;
cout<<"numbers of mystring: "<< mystring::live()<: "<< ws.live()<
遞迴物件的設計模式
1 內容 對於樹形結構,當容器物件 如資料夾 的某乙個方法被呼叫時,將遍歷整個樹形結構,尋找也包含這個方法的成員物件 可以是容器物件,也可以是葉子物件 並呼叫執行,牽一而動百,其中使用了遞迴呼叫的機制來對整個結構進行處理。由於容器物件和葉子物件在功能上的區別,在使用這些物件的 中必須有區別地對待容器...
模板與繼承之藝術 奇特的遞迴模板模式(CRTP)
一 什麼是crtp 奇特的模板遞迴模式 curiously recurring template pattern 即將派生類本身作為模板引數傳遞給基類。template class baset class d public baset 類d是乙個非依賴型基類,不是模板。1 被繼承的類模板 baset...
策略模式 模板方法的使用
之前了解策略模式,都是看的一些理論知識然後敲了一些小demo。比如,定義了演算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化不會影響到使用演算法的使用者 處理掉if else 型別 行為型 系統有很多類,而他們的區別僅僅在於他們的行為不同 乙個系統需要動態地在幾種演算法中選擇一種...