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

隨筆 - 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>
              欧美日韩国产首页在线观看| 欧美成人免费全部| 国产精品日韩欧美综合| 欧美午夜a级限制福利片| 欧美区亚洲区| 欧美激情第3页| 欧美深夜福利| 国产欧美日韩视频在线观看| 国产精品网站一区| 国语对白精品一区二区| 影音先锋欧美精品| 日韩亚洲欧美成人| 亚洲欧美日本国产有色| 久久久久亚洲综合| 亚洲国产日韩在线| 9国产精品视频| 午夜久久久久久久久久一区二区| 欧美在线3区| 欧美激情中文字幕在线| 国产精品一区毛片| 亚洲精品久久| 欧美影院午夜播放| 欧美激情综合| 午夜精品影院在线观看| 欧美精品久久99久久在免费线| 国产精品美女视频网站| 亚洲精美视频| 久久久久久久久久久成人| 亚洲国产高清自拍| 亚洲自拍偷拍福利| 欧美激情视频给我| 欧美成人官网二区| 国产精品99久久久久久久vr | 国产一区白浆| 亚洲欧洲精品一区二区三区不卡 | 欧美无乱码久久久免费午夜一区| 国产一二精品视频| 在线亚洲精品| 欧美ab在线视频| 性欧美video另类hd性玩具| 欧美好吊妞视频| 国自产拍偷拍福利精品免费一| 亚洲一区综合| 亚洲激情网站免费观看| 欧美在线观看一区二区| 国产精品专区一| 亚洲无线一线二线三线区别av| 男人的天堂亚洲在线| 欧美亚洲视频一区二区| 国产精品海角社区在线观看| 日韩性生活视频| 亚洲黑丝在线| 免费视频一区| 亚洲国产经典视频| 久久综合给合久久狠狠狠97色69| 亚洲欧美日韩国产中文| 国产精品福利在线| 亚洲欧美日韩一区二区三区在线观看| 欧美电影免费观看高清| 久久免费视频在线观看| 一区视频在线| 欧美激情一区二区| 免费在线欧美黄色| 亚洲国产精品久久久久秋霞影院| 久久久成人精品| 久久国产精品久久国产精品| 国产一区二区精品在线观看| 久久久久久国产精品一区| 久久高清福利视频| 永久免费精品影视网站| 欧美二区在线看| 欧美成人精品福利| 一级日韩一区在线观看| 亚洲最快最全在线视频| 国产精品一二一区| 另类图片综合电影| 欧美成人精品在线| 9色精品在线| 亚洲一区在线观看免费观看电影高清| 国产精品系列在线播放| 美女网站久久| 欧美日本一道本| 午夜精品福利一区二区三区av| 一本大道av伊人久久综合| 久久久久网址| 麻豆精品视频在线观看视频| 野花国产精品入口| 午夜精品久久久久久99热软件| 狠狠色综合播放一区二区| 免费久久99精品国产自| 欧美日韩高清在线播放| 欧美一区二区网站| 麻豆久久婷婷| 午夜精品视频一区| 久久露脸国产精品| 亚洲视频在线观看视频| 久久国产精品久久久久久久久久| 亚洲激情网站免费观看| 亚洲天堂免费观看| 亚洲国产毛片完整版 | 久久精精品视频| 夜夜嗨av色一区二区不卡| 午夜在线一区二区| 亚洲色诱最新| 久久久国产一区二区| 亚洲视频欧洲视频| 免费日韩成人| 老司机aⅴ在线精品导航| 国产精品二区影院| 亚洲国产视频一区| 亚洲第一精品影视| 亚洲欧美日韩国产成人| 夜夜嗨av一区二区三区免费区| 欧美在线观看天堂一区二区三区| 亚洲午夜视频在线观看| 欧美成人午夜激情视频| 另类尿喷潮videofree| 国产情侣久久| 亚洲午夜av在线| 亚洲精品中文字| 久久久久久久久蜜桃| 久久久久久97三级| 国产精品视频观看| 中文日韩电影网站| 在线一区亚洲| 欧美黄色aaaa| 欧美电影在线播放| 亚洲国产高清一区| 久久看片网站| 玖玖玖国产精品| 黄色在线一区| 久久久天天操| 女同一区二区| 亚洲人成人一区二区三区| 久久这里只有| 欧美国产视频日韩| 亚洲精品日韩一| 欧美国产亚洲精品久久久8v| 亚洲二区精品| 亚洲乱码国产乱码精品精98午夜| 免费成人激情视频| 亚洲国产婷婷香蕉久久久久久| 亚洲国产精品传媒在线观看| 久久精品一区二区三区不卡| 久久影视三级福利片| 亚洲第一区在线观看| 欧美成人精品三级在线观看| 国产欧美另类| 日韩视频不卡中文| 亚洲无线视频| 国产精品视频福利| 欧美在线视频导航| 亚洲成人资源网| 一本色道精品久久一区二区三区| 欧美精品一区二区三区四区| 亚洲免费av电影| 欧美有码在线视频| 一区二区三区在线视频免费观看| 久久夜色精品| 亚洲日本va在线观看| 性色av一区二区三区| 黄网站免费久久| 欧美黄色影院| 亚洲伊人色欲综合网| 久久久久亚洲综合| 夜夜嗨av一区二区三区中文字幕| 国产精品成人一区二区网站软件 | 亚洲精品乱码久久久久久日本蜜臀 | 国产一区二区三区直播精品电影 | 夜夜嗨av一区二区三区| 国产精品乱码一区二区三区| 欧美一区二区视频网站| 欧美激情第3页| 亚洲欧美日韩一区在线观看| 激情久久中文字幕| 国产精品久久久久久久午夜| 久久国产主播| 亚洲美女色禁图| 久久精品国产亚洲精品| 亚洲另类黄色| 玉米视频成人免费看| 欧美午夜片在线观看| 久久久精品国产免大香伊 | 一区二区三区在线免费观看| 欧美女人交a| 欧美在线视频一区二区| 亚洲毛片av| 欧美国产日韩xxxxx| 久久久777| 中日韩高清电影网| 亚洲第一伊人| 久久这里只有精品视频首页| 亚洲视频免费在线观看| 在线成人h网| 国产一区日韩一区| 国产精品你懂得| 欧美日韩高清在线| 欧美大片在线观看一区| 久久久免费精品| 国产综合亚洲精品一区二|