遞迴模板模式的使用 統計某類物件的個數

2021-07-26 09:58:48 字數 997 閱讀 5854

一、概念引入

什麼叫遞迴模板模式呢?簡單的來說就是:派生類將本身作為模板引數傳遞給基類

//傳遞派生類型別

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 型別 行為型 系統有很多類,而他們的區別僅僅在於他們的行為不同 乙個系統需要動態地在幾種演算法中選擇一種...