類模闆與函數模闆差別主要有兩點
- 類模闆沒有自動類型推導的使用方式
- 類模闆在模闆參數清單中可以有預設參數
測試代碼
#include <iostream>
#include <string>
using namespace std;
#include <string>
//類模闆
template<class NameType, class AgeType = int>
class Person
{
public:
Person(NameType name, AgeType age)
{
this->mName = name;
this->mAge = age;
}
void showPerson()
{
cout << "name: " << this->mName << " age: " << this->mAge << endl;
}
public:
NameType mName;
AgeType mAge;
};
//1、類模闆沒有自動類型推導的使用方式
void test01()
{
// Person p("孫悟空", 1000); // 錯誤 類模闆使用時候,不可以用自動類型推導
Person <string, int>p("孫悟空", 1000); //必須使用顯示指定類型的方式,使用類模闆
p.showPerson();
}
//2、類模闆在模闆參數清單中可以有預設參數
void test02()
{
Person <string> p("豬八戒", 999); //類模闆中的模闆參數清單 可以指定預設參數
p.showPerson();
}
int main() {
test01();
test02();
system("pause");
return 0;
}
測試結果
總結
- 類模闆使用隻能用顯示指定類型方式
- 類模闆中的模闆參數清單可以有預設參數