一、常整數對映為型別
alexandrescu提出的簡單而有用的template
template
struct int2type
enum ;
template
class niftycontainer
private:
void dosomething(t* pobj, int2type)
t* pnewobj = pobj->clone();
void dosomething(t* pobj, int2type)
t* pnewobj = new t(*pobj);
public:
void dosomething (t* pobj)
dosomething(pobj, int2type( ) );
上面的小技巧之所以有效是因為:編譯器並不會去編譯乙個未被使用到的template函式,只會對它進行文法檢查。
二、型別對型別的對映
template
struct type2type
typedef t type;
template
t* create(const u&arg, type2type)
return new t(arg);
template
widget* create(const u& arg, type2type)
return new widget(arg, -1);
string* pstr = create("hello", type2type( ) );
widget* pw = create(100, type2type( ) );
stl中的型別轉換
static cast dynamic cast const cast reinterpret cast 1 static cast 可以把static cast看做乙個強制轉換的操作。沒有什麼好說的。2 dynamic cast 類的繼承關係圖 a為基類 void f d pd 還存在一種交叉轉換...
STL 容器型別
1.stl有6種序列容器型別 1 vector 向量 相當於乙個陣列 在記憶體中分配一塊連續的記憶體空間進行儲存。支援不指定vector大小的儲存。stl內部實現時,首先分配乙個非常大的記憶體空間預備進行儲存,即capacituy 函式返回的大小,當超過此分配的空間時再整體重新放分配一塊記憶體儲存,...
STL 容器型別
1.stl有6種序列容器型別 1 vector 向量 相當於乙個陣列 在記憶體中分配一塊連續的記憶體空間進行儲存。支援不指定vector大小的儲存。stl內部實現時,首先分配乙個非常大的記憶體空間預備進行儲存,即capacituy 函式返回的大小,當超過此分配的空間時再整體重新放分配一塊記憶體儲存,...