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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

C++中的类属(泛型)机制——模板

發布時間:2023/11/27 生活经验 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++中的类属(泛型)机制——模板 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數模板

定義:帶有類型參數的函數
格式:

template<class T1,class T2,....> //也可以是typename
<返回值類型><函數名>(<參數表>){......
}

T1、T2是函數模板的類型參數
使用函數模板定義的函數時需要提供具體類型,返回值類型,參數表中的參數類型以及函數體中的局部變量的類型可以是T1,T2等。示例:

template<class T> 
void sort(T elements[], unsigned int count){}

函數模板定義了一系列重載的函數,首先必須要對函數模板進行實例化(生成具體的函數),函數模板的實例化通常是隱式的,有時需要在程序中顯式地實例化函數模板。示例:

#include <iostream>
using namespace std;template<class T>
Swap(T &x, T &y){T tmp=x;x=y;y=tmp;
}int main(){int a=1,b=2;double c=1.1,d=1.2;Swap(a,b); //隱式實例化cout<<a<<" "<<b<<endl; Swap<double>(c,d);//顯式實例化cout<<c<<" "<<d<<endl;return 0;
}

函數模板的偏特化、特化:

template<class T1, class T2>
void func(T1 a,T2 b){cout<<"default"<<endl;
}
//特化:全部模板參數特化
template<>
void func(double a,int b){count<<"double int"<<endl;
}
//偏特化:部分函數模板參數特化
template<class T2>
void func(float a,T2 b){cout<<"flaot"<<endl;
}

類模板

定義:如果一個類的成員的類型可變,則稱為類屬性
格式:

template<class T1, class T2, ...>
class <類名>{//類成員說明
}

與函數模板不同的是,類模板只能進行顯式的實例化。如果有需要,可與模板函數結合,利用模板函數隱式實例化模板類。

類模板中的靜態成員:

#include<iostream>
using namespace std;template<class T>
class A{
public:static int x;
};template<class T>
int A<T>::x=12;int main(){A<int> a1,a2;//a1和a2共享一個xA<double>b1,b2;//b1和b2共享一個xcout<<a1.x<<endl;cout<<a2.x<<endl;b1.x=15;cout<<b1.x<<endl;cout<<b2.x<<endl;return 0;
}

總結

以上是生活随笔為你收集整理的C++中的类属(泛型)机制——模板的全部內容,希望文章能夠幫你解決所遇到的問題。

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