青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 25  文章 - 29  trackbacks - 0
<2006年5月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

留言簿(4)

隨筆分類(22)

隨筆檔案(25)

文章分類(2)

文章檔案(2)

相冊

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 57101
  • 排名 - 405

最新評論

閱讀排行榜

評論排行榜

????????????????????????????? 這幾天看了下模板 ,以下是個人的些心得,高手見笑了
1.類模版 實例 對象定義 引起 實例化
??????????????????????????? 指針,引用 不會引起實例化
類非型參數? 只能是 整形,枚舉,外聯結,且應為一個常量編譯時就應確定
??????????????????? 浮點型,類類型,。。。都不可以
2.class templates 的成員函數 在調用和取地址時實例化,在類實例化時不會自動實例化
3.class templates 的友元申明
??? a.非模版類型
????????? friend class man;
????????? friend void f(void);
?????????? friend void man::f(void);
?? b.一對一的模版友元
???????????? friend class man<T>;
???????????? friend void f<T>( man<T>);
?????????????friend void man<T>::f();
??? c.一對多的模版友元
????????? template <typename T>
?????????????? friend class man;
?????????? template <typename T>
????????????? friend void? f( T);
?????????? template <typename T>
????????????? friend void man<T>::f();
4.類模版的靜態成員
????? 并不在模版定義時實例化,在類模版實例化時實例化,對應1個類型
template <typename T>
int man<T>::size=10;
而成員函數應為
? template <typename T>
?? void man<T>::f(void)
{
..........................................
}
5.成員模版 可以是普通類和 模版類
如:
class woman????????????????????????????????????????????
{
public:
?template <typename T>
??class man
?{
?public:
??print(T a)
??{
???cout<<a;
???
??}

?};
?template <typename T2>
??void print(T2 a)
?{
??cout<<a;
?};
protected:
private:
};
???????????????????????? 1個好的例子
?????????????????????????? template?<typename T>?? class A??
??????????????????????????????? {??????public:
????????????????????????????????????????????????????? template <typename T1>???????????????
????????????????????????????????????????????????????? A&??? operator =(const A<T1> & );
?????????????????????????????? }
???????????????????????????????如此 則A 的對象 可以用其他型的對象賦值了
???? 在使用時才實例化
??????????????????????????????????????? 但是其定義比較駭人
???????????????????????? template <typename T>
???????????????????????????????????? template<typename T1>
???????????????????????????????????? A<T>&? A<T>::operator=(const A<T1>& a)
?????????????????????????????????? {? ...........................}



6.類模版的特化
????? 特化1個類模板(所有成員必須特化包括靜態類數據成員(vc),但友元模板(1:1)可以
不特化,當作一個顯示實參的函數模板處理即可) 或 特化1個模板 成員函數

?????????模板成員函數特化是定義必須出現在實現文件(cpp)中
?????? 語法為
??? void man<int>::f(void)
{
............................
}
??????
類特化
?template <>
class man<int>
{
?????? ......//中所有類型參數以int 替代
};
??????
??man<int>::man()
{
......
}

void man<int>::f(void)
{
}
注意? 類成員中
?? static const 有序類型可以在體內初始化static const int a=10;
??????????????????????? 僅僅static? 必須在體外
?????????????????????????????????????????????????????????????? static int a;
????????????????????????????????????????????????????????????? int?woman::a=10;
???非 特化
?? template <typename T>
?? int man<T>::size=10;
?? 特化
?? int man<char>::size=10;
7偏特化
?? 類模板有1個以上模版參數(類型參數,非類型參數)
????????????? 某些模版參數 被實際的型和值取代(注意是 取代 ,不是增加,減少)
????? 如:

//////////////////頭文件
?????? template <typename T1,typename T2,int size>
class wc
{
public:
?wc()
?{
??cout<<"\n int T1,T2, int";
?}
protected:
private:
};
template <typename T,int size>
class? wc<T* ,T,size>
{
public:
?wc()
?{
??cout<<"\n in T *, T ,size";
?}
protected:
private:
};
template <typename T,int size>
class? wc<T* ,float,size>
{
public:
?wc()
?{
??cout<<"\n in T* ,float,size";
?}
protected:
private:
};
template <typename T>
class? wc<T* ,float,80>
{
public:
?wc()
?{
??cout<<"\n in T* ,float,80";
?}
protected:
private:
};
///////頭文件
//////main()
wc<int,float,10> wc1;
?wc<int* ,int ,20> wc2;
?wc<int*,float,39> wc3;
wc<int*,float,80>wc4;
///////main() ,在vc 7 上通過
//////main()


8.預設模板參數(只有在類模板中才指定 ,1 .? 明確指定 a<int,int>?? ,直接定義時 man<>? kkk;2. a<T,T> )
template <typename T,typename T1=float>
class man
{
..........
}

寫到這里突然想到
????????????????? class A {
????????????????????????????virtual void?? print();
????????????????????????????? };
????????????????? class B:public A {
????????????????????????????????????????? virtual void print();
????????????????????????????????????????? };
B b;
???????????????? A *a =&b;
??????????????? a->print();//調用 B的,此時 print()中的this 指針是?B * const,使用B 的接口?;

9.雙重模板參數(很有用)
??????????????? template <typename T,typename G =man<T> >
?class baby
?{
?public:
? baby ()
? {
?? cout<<"\n in baby";
? }
?protected:
?private:
?};//類型參數可以是 類類型
????????
baby<int, man<float> > b;? //ok
////////////////////////
template <typename T,template <typename G> class TT>//可以省略為 template <typename T? ,template<typename>??class??TT>
?class? son
?{
?public:
?? TT<T> * a;?
???? son()
??{
?????????? a=0;
???cout<<"\n in son";
??}
?protected:
?private:
?};
?? son<int, man> b;//則就含有了 man<int > * a;
TT 是模板占位符號,是一個帶1個類型參數的類模板,如果其有默認模板參數 則忽略掉??
所以?GG若帶默認 的模板 應該如下
??????????? template <typename T, template <typename T2, typename= man<T2>? > class GG>
class son
{
}

/////////?? 類模板類型參數 同時還可以是 類模板

10. 字符串常量在模板中的注意事項

?????????? char * a="hi ,friend ";///"hi, friend"? 文字常量 是 const char [10] 類型? 左值轉換到 const char *
限定轉換到 char *,
??????????????? template <typename T〉
????? ostream& operator <<(ostream & os, const T & b);//注意只有const?才能接受臨時變量

???????????? cout<<"hi,friend";??
????????????? cout<<"bad";
/////2個不同的模板實例
?? typeid(變量).name();///直接打印出變量類型
寫到這,閑扯下:
??? 棧區,堆區,全局(靜態)區,文字常量,代碼區,5個大區,這個是我聽說的
////////////////////////////////////////////////
11.模板的編譯模型
???? 在實例化點必須能找到定義//原則
?????????????????????????? 只能使用包含模式了,
a..h. cpp?在?.h最后一行包含進 cpp
b.?全部在h?或 cpp

?????????????????????分離模式,目前支持的export 關鍵字i的編譯器很少(vc.net 不支持)


12.
函數指針類型也能做模板類型參數

bool ?minn( int ?a, int ?b)
{
?????
return ?a < b;
?}


?template?
< typename?T1,typename?T2 >
????
const ?T1 & ??mymin( const ?T1 & ?t1,? const ?T1 & ?t2,?T2?t3?)
?
{
?????
return ?t3(t1,t2) ? t1:t2;
?}

void ?main()
{
cout
<< mymin( 2 , 3 ,minn);
}


13.
模板參數可以是個類模板??
template <typename T>
class a
{
};
a< vector <int> >;


template <typename T, typename T2,template <typename T,typename T2> class con? >
void add(con<T,T2>,con<T,T2>)
{
?cout<<"ok";
}

add(a,b)//特殊在于 需要推導,vc 7 可以從? 類模板中推導出參數類型

template <typename T,template <typename T2,typename T3> class con >
class ggoo
{
public:
?con<T,T> a;
con<int,int> b;

protected:
private:
};

ggoo<int,double, b> kk;//b<int,double>, con 的模板參數可以任意
?

posted on 2006-05-27 17:55 黃大仙 閱讀(6174) 評論(3)  編輯 收藏 引用 所屬分類: c++

FeedBack:
# re: 類模板(原創) 2007-04-11 10:50 @王一偉
好文,哈哈,下班了慢慢看看你寫的  回復  更多評論
  
# re: 類模板(原創) 2009-06-06 17:33 鳴人
可以。  回復  更多評論
  
# re: 類模板(原創) 2010-03-26 22:52 nomatter9
謝謝了  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              久久偷看各类wc女厕嘘嘘偷窃| 欧美日韩激情小视频| 美国三级日本三级久久99| 性欧美超级视频| 欧美一区二区三区四区在线| 亚洲欧美激情在线视频| 西瓜成人精品人成网站| 久久精品国产欧美激情| 久久久精品久久久久| 美女任你摸久久| 亚洲二区在线观看| 亚洲精品1区2区| 亚洲午夜电影| 久久久噜噜噜久久人人看| 久久亚洲春色中文字幕| 欧美日韩免费观看一区| 国产亚洲精品久久飘花| 亚洲激情另类| 亚洲一区二区三区中文字幕在线 | 欧美日韩国产综合视频在线观看| 欧美精品三级日韩久久| 国产精品一区二区黑丝| 亚洲二区视频在线| 亚洲综合国产| 欧美大片免费看| 中日韩男男gay无套| 久久成人国产| 欧美日韩中文字幕在线| 一区二区三区亚洲| 亚洲免费中文| 亚洲国产成人午夜在线一区| 亚洲欧美日韩成人高清在线一区| 美女脱光内衣内裤视频久久影院| 国产精品免费在线| 亚洲精品资源| 欧美大片免费| 久久久久久久久久久久久女国产乱| 欧美另类69精品久久久久9999| 国产日韩精品入口| 亚洲一级片在线看| 91久久久一线二线三线品牌| 久久爱www.| 国产精品一级二级三级| 一区二区三区精品视频| 欧美99久久| 久久疯狂做爰流白浆xx| 国产欧美日本一区二区三区| 亚洲精品国产日韩| 欧美h视频在线| 久久久亚洲高清| 国产综合色精品一区二区三区| 在线视频欧美一区| 欧美.www| 久久激情五月激情| 亚洲欧洲一区二区在线播放| 久久成人国产| 国产视频观看一区| 午夜精品久久久久久久蜜桃app| 亚洲国产一区二区三区高清| 久久精品人人做人人爽| 黑人巨大精品欧美黑白配亚洲| 先锋影音网一区二区| 99精品99久久久久久宅男| 欧美日韩免费观看中文| 亚洲免费观看高清完整版在线观看熊 | 老鸭窝毛片一区二区三区| 激情懂色av一区av二区av| 久久成人亚洲| 久久福利毛片| 在线精品观看| 欧美国产一区二区| 欧美成人精品在线观看| 亚洲精品综合久久中文字幕| 亚洲国产另类 国产精品国产免费| 免费观看亚洲视频大全| 日韩亚洲精品电影| 99伊人成综合| 国产日韩欧美麻豆| 免费人成网站在线观看欧美高清| 久久久视频精品| 亚洲精品人人| 99re66热这里只有精品4| 国产精品爽黄69| 久久久久九九九九| 欧美成黄导航| 亚洲欧美日韩国产一区二区| 性色一区二区三区| 在线观看亚洲a| 亚洲精品在线观| 国产欧美日韩一区二区三区| 欧美成人黑人xx视频免费观看| 欧美精品久久久久久久久久| 亚洲欧美国产va在线影院| 久久er精品视频| 99pao成人国产永久免费视频| 亚洲午夜羞羞片| 亚洲国产欧美不卡在线观看| 一本久道综合久久精品| 国产在线一区二区三区四区| 亚洲国产免费看| 国产欧美日韩精品丝袜高跟鞋| 蘑菇福利视频一区播放| 国产精品国产三级国产aⅴ9色| 美女爽到呻吟久久久久| 欧美日韩精品一区视频| 玖玖玖免费嫩草在线影院一区| 欧美日韩一区二区视频在线| 老司机午夜精品视频在线观看| 欧美日韩国产一区精品一区| 久久久久久网址| 国产精品免费看| 欧美亚洲网站| 欧美连裤袜在线视频| 欧美在线一级va免费观看| 久久久综合网站| 欧美亚洲视频在线看网址| 久久亚洲国产精品一区二区| 亚洲影视综合| 欧美激情综合色综合啪啪| 欧美一区二区高清| 欧美色区777第一页| 亚洲高清在线视频| 伊人久久av导航| 亚洲女同精品视频| 亚洲视频999| 欧美日韩日日骚| 亚洲精品一区二区三区樱花| 亚洲国产日韩欧美一区二区三区| 欧美一区二区三区在线看| 欧美一级久久久久久久大片| 欧美午夜理伦三级在线观看| 亚洲精品欧美在线| 一区二区三区视频观看| 欧美精品一线| 日韩午夜三级在线| 正在播放欧美一区| 欧美日韩免费看| 一区二区91| 性欧美xxxx视频在线观看| 中文在线资源观看视频网站免费不卡| 一区在线播放| 久久香蕉精品| 亚洲第一区中文99精品| 亚洲精品免费一区二区三区| 欧美精品日韩www.p站| 91久久精品美女高潮| 99在线观看免费视频精品观看| 欧美精品黄色| 一区二区三区|亚洲午夜| 亚洲午夜在线观看视频在线| 蜜桃av一区二区| 亚洲青色在线| 亚洲欧美一区二区精品久久久| 国产精品老牛| 香蕉久久一区二区不卡无毒影院| 久久成人资源| 精品动漫一区二区| 欧美激情精品久久久久久黑人 | 91久久精品一区| 亚洲一区二区三区免费在线观看| 免费一级欧美在线大片| 亚洲乱码国产乱码精品精98午夜 | 午夜精品久久久久久99热软件| 国产精品欧美激情| 久久se精品一区二区| 麻豆成人在线| 一区二区三区偷拍| 国产精品一区免费在线观看| 久久久精品动漫| 亚洲欧洲另类国产综合| 亚久久调教视频| 亚洲国产成人精品视频| 欧美午夜一区二区福利视频| 国产日韩欧美a| 欧美高清视频一区| 99riav1国产精品视频| 欧美性一二三区| 久久久一区二区三区| 亚洲片区在线| 久久久噜噜噜久久中文字免| 日韩亚洲国产精品| 狠狠狠色丁香婷婷综合久久五月| 美女脱光内衣内裤视频久久网站| 99pao成人国产永久免费视频| 久久精品九九| 亚洲欧美日韩系列| 亚洲精品123区| 久久久久久久久久码影片| 一区二区免费看| 亚洲电影毛片| 国产一区91| 欧美午夜在线观看| 久色成人在线| 久久国产88| 午夜视黄欧洲亚洲| 一区二区欧美视频| 欧美激情四色| 欧美高清成人| 欧美成人69| 免播放器亚洲一区|