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

隨筆 - 25  文章 - 29  trackbacks - 0
<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(4)

隨筆分類(22)

隨筆檔案(25)

文章分類(2)

文章檔案(2)

相冊

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 57112
  • 排名 - 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 黃大仙 閱讀(6176) 評論(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性色tv| 最新国产精品拍自在线播放| 欧美日韩国产经典色站一区二区三区 | 亚洲精品一区二区三区四区高清 | 欧美精品一区二区视频| 一区二区三区高清| 午夜一区二区三区在线观看 | 欧美国产一区二区在线观看| 中日韩在线视频| 欧美伊人久久| av不卡在线| 亚洲免费婷婷| 国产色爱av资源综合区| 亚洲欧美日本伦理| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲美女一区| 午夜精品视频在线观看一区二区| 国内成人精品2018免费看| 亚洲国产高清在线观看视频| 国产精品国产三级国产普通话三级 | 欧美在线不卡视频| 久久精品av麻豆的观看方式| 亚洲激情啪啪| 午夜精品免费视频| 在线不卡中文字幕| 亚洲国产成人av在线| 国产精品jizz在线观看美国| 久久er精品视频| 欧美黄色影院| 久久国产毛片| 欧美成人免费全部观看天天性色| 在线视频日本亚洲性| 欧美一级网站| 亚洲激情第一页| 亚洲综合日韩中文字幕v在线| 激情一区二区三区| 夜夜嗨av色一区二区不卡| 国产午夜一区二区三区| 最新日韩av| 国产日韩欧美在线一区| 亚洲国产精品视频| 国产日韩欧美中文| 亚洲综合日韩在线| 一区二区三区欧美成人| 午夜在线播放视频欧美| 亚洲性线免费观看视频成熟| 久久久综合网站| 欧美在线亚洲在线| 国产精品草草| 亚洲国产精品美女| 国外精品视频| 亚洲欧美一区二区原创| 亚洲精品乱码久久久久久日本蜜臀| 亚洲一区二区久久| 亚洲一区国产| 欧美久久久久久久久| 欧美激情久久久| 精品成人在线| 欧美与黑人午夜性猛交久久久| 西西人体一区二区| 国产精品视频免费| 一本一本久久a久久精品牛牛影视| 亚洲黄一区二区| 久久精品盗摄| 久久九九热re6这里有精品| 国产精品久久久久久影院8一贰佰| 亚洲高清在线| 亚洲国产欧美另类丝袜| 欧美一区二区成人| 久久av在线看| 国产一区久久久| 欧美在线视频免费观看| 久久这里只有| 亚洲美女网站| 国产精品二区影院| 一区二区三区你懂的| 亚洲人成人一区二区三区| 亚洲电影免费观看高清完整版在线观看 | 久久精品国产一区二区三| 久久九九精品99国产精品| 一区视频在线播放| 国产精品久久久久久久久借妻| 亚洲第一页自拍| 国内精品久久久久影院色| 午夜精品一区二区三区在线视 | 久久久国产精品一区| 国产在线一区二区三区四区| 欧美在线一二三区| 欧美黄网免费在线观看| 亚洲七七久久综合桃花剧情介绍| 老妇喷水一区二区三区| 亚洲激情六月丁香| 午夜精品在线看| 一区视频在线| 欧美激情一区二区三区| 亚洲午夜激情网页| 久久aⅴ国产紧身牛仔裤| 激情婷婷亚洲| 欧美激情精品久久久久久黑人 | 久久成人资源| 一区二区三区在线视频免费观看| 你懂的成人av| 亚洲在线观看视频网站| 欧美激情中文字幕一区二区| 午夜精品久久久久影视| 亚洲精品国产精品国自产在线| 国产精品每日更新在线播放网址| 蜜桃久久av一区| 欧美一区二区三区电影在线观看| 亚洲国产免费看| 久久久亚洲成人| 欧美一区二区三区日韩| 91久久精品一区二区三区| 国产一区二区三区观看| 国产精品大片wwwwww| 欧美不卡高清| 久久米奇亚洲| 久久爱另类一区二区小说| 夜夜嗨av一区二区三区网页| 亚洲第一天堂av| 蜜臀av国产精品久久久久| 午夜久久福利| 亚洲免费在线精品一区| 在线一区欧美| 99精品视频免费观看| 亚洲国产精品va在线看黑人动漫 | 在线亚洲观看| 99av国产精品欲麻豆| 最新日韩欧美| 亚洲日本欧美天堂| 精品二区视频| 樱桃国产成人精品视频| 国产亚洲aⅴaaaaaa毛片| 国产欧美日韩一区二区三区在线| 午夜精品在线| 亚洲午夜精品久久久久久浪潮 | 亚洲日本乱码在线观看| 亚洲福利视频一区二区| 亚洲第一中文字幕| 在线精品国产欧美| 亚洲国产老妈| 亚洲精品在线三区| 日韩亚洲欧美一区| 亚洲一区二区不卡免费| 亚洲欧美区自拍先锋| 午夜免费日韩视频| 久久精品国产精品亚洲| 久久亚洲高清| 欧美成人免费大片| 亚洲经典三级| 一区二区三区福利| 亚洲无亚洲人成网站77777| 亚洲综合电影| 久久久久成人精品| 美女诱惑一区| 欧美日韩一区国产| 国产欧美一区二区精品婷婷| 国产在线不卡精品| 亚洲欧洲一级| 亚洲在线视频免费观看| 久久九九全国免费精品观看| 美女国产精品| 亚洲每日在线| 午夜精品短视频| 麻豆成人在线观看| 欧美日韩视频一区二区三区| 国产精品专区一| 亚洲观看高清完整版在线观看| 日韩视频永久免费| 欧美有码在线视频| 亚洲国产欧美日韩精品| 亚洲你懂的在线视频| 久久夜色精品国产欧美乱| 欧美三级小说| 亚洲高清激情| 欧美亚洲综合久久| 亚洲经典一区| 久久久激情视频| 国产精品国产三级国产aⅴ9色| 黄网站免费久久| 亚洲欧美变态国产另类| 美女国产精品| 午夜在线视频观看日韩17c| 欧美岛国激情| 国语精品中文字幕| 亚洲综合精品四区| 亚洲激情精品| 久久视频在线视频| 国产精品最新自拍| 在线视频精品一区| 亚洲电影天堂av| 久久爱www久久做| 国产精品一级久久久| 日韩视频不卡中文| 奶水喷射视频一区| 欧美一区二区在线播放|