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

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

常用鏈接

留言簿(4)

隨筆分類(22)

隨筆檔案(25)

文章分類(2)

文章檔案(2)

相冊

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 57567
  • 排名 - 406

最新評論

閱讀排行榜

評論排行榜

????????????????????????????? 這幾天看了下模板 ,以下是個人的些心得,高手見笑了
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 黃大仙 閱讀(6190) 評論(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>
              亚洲国产精品一区二区第一页| 一本久久a久久免费精品不卡| 亚洲欧美日韩天堂一区二区| 欧美三级午夜理伦三级中文幕 | 亚洲免费在线看| 国产噜噜噜噜噜久久久久久久久| 亚洲欧美日韩国产综合在线| 午夜精品偷拍| 在线观看日韩av电影| 91久久精品美女| 欧美日韩美女在线观看| 亚洲欧美另类在线观看| 欧美一级免费视频| 亚洲电影免费观看高清完整版在线观看 | 久久久国产精品一区| 一区二区视频免费在线观看| 亚洲激情啪啪| 国产精品免费看片| 另类激情亚洲| 欧美日韩三级一区二区| 久久九九热re6这里有精品| 久久精品一区二区三区不卡牛牛| 亚洲欧洲日产国产网站| 日韩午夜电影| 狠狠综合久久av一区二区小说 | 亚洲视频国产视频| 欧美在线免费看| 亚洲日本中文字幕| 欧美一区二区在线| 夜夜精品视频一区二区| 亚洲欧美日韩精品一区二区| 亚洲激情影视| 亚洲欧美日韩系列| 夜夜嗨网站十八久久| 久久av资源网| 在线中文字幕不卡| 久久欧美肥婆一二区| 亚洲男人av电影| 免费看av成人| 久久婷婷综合激情| 国产精品久久久久婷婷| 亚洲国产mv| 国内外成人免费激情在线视频网站 | 国产一区二区高清不卡| 亚洲国产精品久久| 极品少妇一区二区| 亚洲欧美久久久久一区二区三区| 亚洲免费激情| 你懂的国产精品| 久久免费一区| 国产欧美精品一区二区色综合| 欧美阿v一级看视频| 国产人妖伪娘一区91| 99re6热在线精品视频播放速度| 亚洲成人影音| 久久久www成人免费精品| 欧美亚洲在线观看| 国产精品av免费在线观看| 亚洲高清成人| 亚洲精品日产精品乱码不卡| 免费在线播放第一区高清av| 久久综合狠狠| 精品999网站| 久久精品理论片| 久热精品视频在线免费观看| 黄色成人在线| 久久精品国产清高在天天线| 欧美在线观看一区| 国产欧美日韩一区| 亚洲欧美日韩精品久久久| 欧美一区二区三区四区在线 | 老司机午夜精品视频| 久久天天综合| 伊人婷婷欧美激情| 乱人伦精品视频在线观看| 欧美大胆成人| 日韩一区二区精品葵司在线| 欧美精品亚洲二区| 一区二区三区毛片| 欧美一区二区三区四区视频| 国产模特精品视频久久久久| 欧美亚洲日本网站| 久久一区免费| 亚洲乱码日产精品bd| 欧美日韩免费看| 亚洲午夜羞羞片| 久久久久国产精品人| 激情一区二区| 欧美激情综合五月色丁香| 一区二区国产日产| 久久激情综合网| 亚洲高清在线观看一区| 欧美sm视频| 亚洲天堂久久| 久久在线视频| 一本久道久久综合中文字幕| 国产精品毛片大码女人 | 欧美激情精品| 亚洲一区久久久| 狠狠爱成人网| 欧美日韩精品| 久久嫩草精品久久久精品一| 亚洲精品字幕| 久久久www成人免费精品| 亚洲精品看片| 国产农村妇女毛片精品久久莱园子| 久久人体大胆视频| 亚洲午夜一级| 欧美激情综合色| 久久精品国产第一区二区三区最新章节 | 欧美日韩综合在线| 欧美在线不卡| 99pao成人国产永久免费视频| 久久久久久夜| 亚洲一区二区三区三| 激情五月综合色婷婷一区二区| 欧美日韩精品一区二区三区四区| 欧美一区1区三区3区公司| 亚洲精品少妇30p| 久久综合给合久久狠狠狠97色69| 亚洲视频在线观看网站| 亚洲国产91精品在线观看| 国产日韩精品一区二区| 欧美视频在线一区二区三区| 老司机67194精品线观看| 亚洲综合色在线| 99精品热视频| 日韩网站在线观看| 亚洲国产精品电影| 免费h精品视频在线播放| 欧美诱惑福利视频| 亚洲欧美中文日韩v在线观看| 91久久精品美女| 1024国产精品| 韩国一区二区三区在线观看| 国产精品一二一区| 国产精品久久网| 欧美日韩亚洲一区二区三区在线观看 | 久久久久国产精品一区二区| 性色av一区二区三区红粉影视| 妖精视频成人观看www| 亚洲理论电影网| 99re6热只有精品免费观看| 亚洲国产精品99久久久久久久久| 国模大胆一区二区三区| 国产一区二区0| 国产一区二区三区久久久久久久久| 国产精品一卡二| 国产婷婷色一区二区三区四区| 国产精品―色哟哟| 国产偷自视频区视频一区二区| 国产乱肥老妇国产一区二| 国产精品不卡在线| 国产精品一区视频| 国产一区二区三区在线观看视频| 国产一区欧美| 亚洲国产精品精华液网站| 亚洲国产专区校园欧美| 日韩亚洲在线观看| 亚洲一品av免费观看| 亚洲女人天堂成人av在线| 久久国产精品一区二区| 久久久在线视频| 亚洲国产成人91精品| 日韩亚洲欧美中文三级| 亚洲午夜免费视频| 久久精品青青大伊人av| 欧美电影打屁股sp| 欧美午夜精品久久久久久浪潮| 国产美女搞久久| 亚洲第一在线| 亚洲午夜精品久久久久久app| 香蕉久久国产| 免费观看亚洲视频大全| 91久久黄色| 亚洲欧美日韩精品在线| 美女精品一区| 国产精品久久久久一区| 亚洲国产成人精品久久久国产成人一区 | 男人的天堂亚洲| 欧美日韩一区精品| 狠狠久久五月精品中文字幕| 亚洲国产精品激情在线观看| 亚洲男人天堂2024| 欧美va亚洲va香蕉在线| 在线一区欧美| 美国成人毛片| 国产精品亚洲综合久久| 亚洲人成网站777色婷婷| 久久gogo国模啪啪人体图| 欧美精品色网| 在线精品视频一区二区| 亚洲一区二区综合| 欧美成ee人免费视频| 亚洲自拍都市欧美小说| 欧美精品一卡二卡| 在线精品高清中文字幕| 欧美专区在线播放| 亚洲欧洲日韩综合二区| 久久久久综合网|