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

隨筆 - 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>
              91久久精品国产91性色| 午夜精品久久99蜜桃的功能介绍| 美国十次成人| 国产精品电影观看| 日韩视频在线一区二区| 久久精品亚洲| 99精品欧美一区| 免播放器亚洲| 免费在线成人| 国产日本欧美一区二区| 国产亚洲福利社区一区| 欧美尤物巨大精品爽| 免费在线看一区| 久久亚洲精选| 亚洲区在线播放| 亚洲一区二区三区视频| 亚洲欧美精品| 蜜桃精品一区二区三区| 一区二区三区四区五区精品| 亚洲国产日韩欧美综合久久| 亚洲一区二区三区四区视频| 在线观看国产欧美| 欧美一区二区三区在线| 亚洲第一搞黄网站| 久久久久久婷| 久久久777| 国产欧美日韩一区二区三区在线| 亚洲最新中文字幕| 亚洲欧美日韩精品| 久久久国产精品一区二区三区| 99成人在线| 亚洲一级高清| 亚洲欧美变态国产另类| 欧美日韩国产综合网| 亚洲高清不卡| 亚洲国产精品999| 欧美日韩精品综合| 亚洲欧美一区二区三区久久 | 亚洲一区3d动漫同人无遮挡| 欧美一区二区三区视频免费播放| 欧美高清在线播放| 美女精品一区| 在线综合+亚洲+欧美中文字幕| 欧美午夜精品一区| 久久国产精品久久久久久久久久| 欧美日韩另类丝袜其他| 午夜视黄欧洲亚洲| 亚洲精品精选| 蜜桃精品久久久久久久免费影院| 亚洲一级高清| 国内精品久久久久久| 欧美一区二区三区视频在线| 亚洲三级电影在线观看| 久久gogo国模裸体人体| 一本一本久久a久久精品综合妖精| 国产日韩欧美综合精品| 国产精品美女久久久久av超清| 久久久久久久一区| 久久精品观看| 久久久久久久网站| 久久九九国产精品怡红院| 午夜伦欧美伦电影理论片| 一区二区三区四区五区精品| 亚洲精品一区在线| 亚洲国产精品黑人久久久| 国产一区二三区| 激情五月综合色婷婷一区二区| 国产日韩精品在线观看| 狠狠色综合一区二区| 国产欧美日韩| 在线观看国产精品淫| 亚洲人成人一区二区在线观看| 亚洲肉体裸体xxxx137| 日韩亚洲欧美成人| 亚洲在线视频网站| 久久久久国产一区二区三区四区 | 久久在线91| 欧美连裤袜在线视频| 欧美午夜不卡| 亚洲国产成人久久综合| 亚洲精品三级| 久久一区激情| 99视频精品免费观看| 亚洲免费婷婷| 欧美xx视频| 亚洲综合社区| 欧美日韩国产在线看| 国产丝袜美腿一区二区三区| 欧美日韩视频不卡| 美女性感视频久久久| 国产精品爱久久久久久久| 在线观看视频一区| 久久精品亚洲一区二区| 一本久久a久久免费精品不卡| 久久天堂av综合合色| 国内综合精品午夜久久资源| 亚洲男人影院| 亚洲久久一区| 欧美午夜不卡影院在线观看完整版免费 | 亚洲日本成人在线观看| 久久精品在线免费观看| 亚洲精品女av网站| 猫咪成人在线观看| 亚洲精品一区二区三区樱花| 欧美一区二区三区免费视频| 亚洲欧美日韩精品在线| 欧美日韩国产123| 亚洲一区二区三区激情| 亚洲私人影院| 国产综合第一页| 亚洲黄色高清| 国产精品系列在线播放| 久久精品日韩一区二区三区| 亚洲国产一区二区三区在线播 | 99视频精品在线| 国产精品大全| 欧美一区二区三区久久精品茉莉花| 亚洲永久在线| 在线看无码的免费网站| 亚洲最新合集| 亚洲激情不卡| 亚洲一级黄色| 日韩图片一区| 国产日韩欧美综合一区| 欧美一区精品| 欧美成人dvd在线视频| 亚洲视频在线二区| 久久天天躁狠狠躁夜夜av| 亚洲一区二区免费| 欧美激情一区二区三级高清视频| 欧美在线一二三| 国产精品一区二区久久国产| 欧美成人r级一区二区三区| 国产精品视频| 亚洲一区二区精品在线观看| 亚洲高清毛片| 欧美不卡三区| 欧美一级午夜免费电影| 亚洲国产婷婷香蕉久久久久久| 欧美日韩理论| 欧美激情第三页| 91久久精品一区二区别| 久久一区二区三区四区五区| 久久久美女艺术照精彩视频福利播放| 国产精品男人爽免费视频1| 日韩一级精品视频在线观看| 一本到高清视频免费精品| 欧美日本在线观看| 99re6热在线精品视频播放速度| 一区二区三区日韩精品视频| 久久精品综合| 久久久精品性| 国产日韩精品一区二区三区在线| 亚洲欧洲日本一区二区三区| 欧美国产视频日韩| 亚洲午夜电影| 欧美日韩亚洲视频一区| 欧美91精品| 狠狠综合久久av一区二区老牛| 99在线热播精品免费99热| 99精品视频免费全部在线| 国产精品永久| 欧美a级片网| 欧美一区二区三区喷汁尤物| 亚洲黄一区二区| 久久久久久久久久码影片| 亚洲人成毛片在线播放| 亚洲伦伦在线| 欧美.www| 这里只有精品视频| 奶水喷射视频一区| 中日韩午夜理伦电影免费| 久久综合久久美利坚合众国| 亚洲一区免费网站| 夜久久久久久| 亚洲最新视频在线播放| 在线免费精品视频| 亚洲日本va午夜在线影院| 国产一区二区三区在线观看网站 | 久久激情视频久久| 午夜精品视频在线| 国产精一区二区三区| 国产精品大片wwwwww| 国产精品jizz在线观看美国| 欧美精品日本| 欧美性大战久久久久| 欧美日韩一区二区三| 国产精品国码视频| 国产欧美日韩高清| 国外视频精品毛片| 亚洲国产视频一区二区| 一区二区三区国产在线| 亚洲一区制服诱惑| 久久裸体艺术| 亚洲作爱视频| 久久麻豆一区二区| 欧美日本中文| 在线观看亚洲视频啊啊啊啊| 亚洲国产网站| 亚洲视频在线看|