C++模板超詳細(xì)介紹
1.前言
模板是泛型編程的基礎(chǔ),泛型編程即以一種獨(dú)立于任何特定類型的方式編寫代碼。
模板是創(chuàng)建泛型類或函數(shù)的藍(lán)圖或公式。
通常有兩種形式:函數(shù)模板和類模板;
2.函數(shù)模板
函數(shù)模板針對(duì)僅參數(shù)類型不同的函數(shù)
一般形式為:
template <類型形式參數(shù)表>
類型 函數(shù)名( 形式參數(shù)表)
{
// 函數(shù)的主體
}函數(shù)調(diào)用實(shí)例:
#include <iostream>
#include <string>
using namespace std;
template <typename T>
inline T const& Max(T const& a, T const& b)
{
return a < b ? b : a;
}
int main()
{
int x1 = 114514;
int x2 = 121212;
cout << "Max: " << Max(x1, x2) << endl;//隱式調(diào)用
int x3 = 114514;
int x4 = 'a';
//cout << "Max: " << Max(x3, x4) << endl;//無(wú)法通過編譯
cout << "Max: " << Max<int>(x3, x4) << endl;//顯示調(diào)用
double f1 = 13.5;
double f2 = 24.6;
cout << "Max: " << Max(f1, f2) << endl;
string s1 = "Yuta";
string s2 = "Rokka";
cout << "Max: " << Max(s1, s2) << endl;
return 0;
}根據(jù)此樣例我們得注意:
1. 函數(shù)模板分為兩種調(diào)用方式:
顯示模板實(shí)參調(diào)用(顯示調(diào)用),隱式模板實(shí)參調(diào)用(隱式調(diào)用)。
2.隱式調(diào)用不需要顯示給出模板參數(shù),直接經(jīng)過參數(shù)推演進(jìn)行調(diào)用。
3. 顯示調(diào)用則不需要推演直接根據(jù)顯示給出的模板參數(shù)進(jìn)行調(diào)用。
x3和x4因?yàn)轭愋筒煌诒容^中因?yàn)楹瘮?shù)無(wú)法從這兩個(gè)參數(shù)中進(jìn)行類型推演,所以不能進(jìn)行。
所以一般建議調(diào)用時(shí)采取顯示調(diào)用,便于代碼的理解和維護(hù)。
結(jié)果:

3.類模板
類模板針對(duì)僅數(shù)據(jù)成員和成員函數(shù)類型不同的類。
對(duì)于類模板的使用而言,沒有隱式模板實(shí)參和顯式模板實(shí)參使用的說法,因?yàn)轭惸0宓氖褂帽仨氾@示指明模板實(shí)參。
一般形式為:
template <class type>
class 類名 {
.
.
.
}樣例:
#include <iostream>
using namespace std;
template<typename T>
class A {
private:
T num;
public:
A()
{
num = T(6.6667);
}
void print()
{
cout << "num:" << num << endl;
}
};
int main() {
A<int> a; //顯示模板實(shí)參的隱式實(shí)例化
a.print();
}需要注意,此時(shí)我們調(diào)用模板類的時(shí)候,必須是以顯示調(diào)用的方式來(lái)進(jìn)行,不然會(huì)經(jīng)典報(bào)錯(cuò)。

解決方法便是顯示給出模板參數(shù) 啦
樣例結(jié)果:

到此這篇關(guān)于C++模板超詳細(xì)介紹的文章就介紹到這了,更多相關(guān)C++模板內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用C++開發(fā)一個(gè)串口讀寫軟件的實(shí)現(xiàn)步驟
這篇文章主要介紹了使用xmake(一個(gè)項(xiàng)目管理工具兼包管理工具)和asio2(一個(gè)asio的框架,可以實(shí)現(xiàn)輕松各種網(wǎng)絡(luò)應(yīng)用,一般支持tcp,udp,http,websocket,rpc,ssl,icmp,serial_port.)來(lái)快速的開發(fā)個(gè)串口讀寫軟件(整合例程),需要的朋友可以參考下2025-04-04
C語(yǔ)言修煉之路悟徹?cái)?shù)組真妙理?巧用下標(biāo)破萬(wàn)敵下篇
在C語(yǔ)言和C++等語(yǔ)言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲(chǔ)類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來(lái)指向若干個(gè)字符串,使字符串處理更加方便、靈活2022-02-02
C語(yǔ)言手把手教你實(shí)現(xiàn)貪吃蛇AI(上)
這篇文章主要介紹了C語(yǔ)言手把手教你實(shí)現(xiàn)貪吃蛇AI,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
C語(yǔ)言循環(huán)隊(duì)列的表示與實(shí)現(xiàn)實(shí)例詳解
這篇文章主要介紹了C語(yǔ)言循環(huán)隊(duì)列的表示與實(shí)現(xiàn),對(duì)于數(shù)據(jù)結(jié)構(gòu)與算法的研究很有幫助,需要的朋友可以參考下2014-07-07

