日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

[转]c++模板

發布時間:2023/12/18 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转]c++模板 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://www.cnblogs.com/gaojun/archive/2010/09/10/1823354.html

函數模板的寫法

函數模板的一般形式如下:

Template <class或者也可以用typename?T>

返回類型 函數名(形參表)
{//函數定義體 }

說明: template是一個聲明模板的關鍵字,表示聲明一個模板關鍵字class不能省略,如果類型形參多余一個 ,每個形參前都要加class <類型 形參表>可以包含基本數據類型可以包含類類型.

?

請看以下程序:

//Test.cpp

#include?<iostream>

using?std::cout;

using?std::endl;

?

//聲明一個函數模版,用來比較輸入的兩個相同數據類型的參數的大小,class也可以被typename代替,

//T可以被任何字母或者數字代替。

template?<class?T>

T min(T x,T y)

{?return(x<y)?x:y;}

?

void?main( )

{

?????int?n1=2,n2=10;

?????double?d1=1.5,d2=5.6;

???? cout<<?"較小整數:"<<min(n1,n2)<<endl;

???? cout<<?"較小實數:"<<min(d1,d2)<<endl;

???? system("PAUSE");

}

程序運行結果:

 

?

程序分析:main()函數中定義了兩個整型變量n1 , n2 兩個雙精度類型變量d1 , d2然后調用min( n1, n2); 即實例化函數模板T min(T x, T y)其中T為int型,求出n1,n2中的最小值.同理調用min(d1,d2)時,求出d1,d2中的最小值.

3.?類模板的寫法

定義一個類模板:

Template <?class或者也可以用typename?T >
class類名{
//類定義......
};

說明:其中,template是聲明各模板的關鍵字,表示聲明一個模板,模板參數可以是一個,也可以是多個。

例如:定義一個類模板:

// ClassTemplate.h
#ifndef?ClassTemplate_HH

#define?ClassTemplate_HH

?

template<typename?T1,typename?T2>

class?myClass{

private:

???? T1 I;

???? T2 J;

public:

???? myClass(T1 a, T2 b);//Constructor

?????void?show();

};

?

//這是構造函數

//注意這些格式

template?<typename?T1,typename?T2>

myClass<T1,T2>::myClass(T1 a,T2 b):I(a),J(b){}

?

//這是void show();

template?<typename?T1,typename?T2>

void?myClass<T1,T2>::show()

{

???? cout<<"I="<<I<<", J="<<J<<endl;

}

#endif

?

// Test.cpp

#include?<iostream>

#include?"ClassTemplate.h"

using?std::cout;

using?std::endl;

?

void?main()

{

???? myClass<int,int> class1(3,5);

???? class1.show();

?

???? myClass<int,char> class2(3,'a');

???? class2.show();

?

???? myClass<double,int> class3(2.9,10);

???? class3.show();

?

???? system("PAUSE");

}

?

最后結果顯示:

?

?

4.非類型模版參數

一般來說,非類型模板參數可以是常整數(包括枚舉)或者指向外部鏈接對象的指針。

那么就是說,浮點數是不行的,指向內部鏈接對象的指針是不行的。


template<typename?T,?int?MAXSIZE>

class?Stack{

Private:

?????? T elems[MAXSIZE];

.....

};

?

Int main()

{

?????? Stack<int, 20> int20Stack;

?????? Stack<int, 40> int40Stack;

};

轉載于:https://www.cnblogs.com/JieForest/p/3617972.html

總結

以上是生活随笔為你收集整理的[转]c++模板的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。