C++模板的定製三:部分定製C++類 (轉)

worldblog發表於2007-12-11
C++模板的定製三:部分定製C++類 (轉)[@more@]

C++模板的定製三:部分定製C++類:namespace prefix = o ns = "urn:schemas--com::office" />

  類别範本的多參語法如下:

  template

  class classname

{

  ……

};

T可以是任何型別,上一節我們介紹了定製類别範本,本節說一下類别範本的部分定製,意思就是說只定制模板引數的一部分,從而得到我們想要的目的,本節直接來描述其語法,我想信大家都不願意我在這羅嗦,都想直接瞭解其語法。下面我們就看一個類别範本部分定製的例子。

SpecTemplate類的原型如下:

template

class SpecTemplate

{

public:

  SpecTemplate(T t,P p):_valt(t),_valp(p){}

  ~SpecTemplate(){}

  T typeT(){return _valt;}

  void typeT(T& t){ _valt = t;}

  void display(){cout<<_valt>

  ……

 

private:

  T _valt;

  P _valp;

};

假設我們想定製SpecTemplate類的模板引數P,當P為string型別時,我們希望其相應的SpecTemplate類和通用的SpecTemplate類具備不同的功能。這時需部分定製SpecTemplate類,部分定製示例如下:

template

class SpecTemplate

{

public:

  SpecTemplate(T t,int p):_valt(t),_valp(p){}

  ~SpecTemplate(){}

  T typeT(){return _valt;}

  void typeT(T& t){ _valt = t;}

  void display(){cout<<_valp>

  ……

 

private:

  T _valt;

  int _valp;

};

這樣就完成了類别範本的部分定製,從而實現你特殊的要求。這裡只是舉例,請大家千萬別說這樣有不沒有意義什麼的。我只希望大家能明白其用法即可。

:現在的VC6.0尚不支援這種寫法,但這是C++標準寫法,如果要試請用BC或GCC。

文章寫的倉促,有錯別字或錯誤請大家多批評指出。謝謝大家的捧場,在下感激不盡,歡迎和大家交流 (-----袁凱-----)。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991352/,如需轉載,請註明出處,否則將追究法律責任。

相關文章