類别範本與函式模板的區別

Ricky001發表於2024-12-07

類别範本與函式模板區別主要有兩點:
1.類别範本沒有自動型別推導的使用方式
2.類别範本在模板引數列表中可以有預設引數
示例:

#include <iostream>
using namespace std;
#include <string>

//類别範本與函式模板的區別
template<class NameType,class AgeType=int>
class Person
{
public:
    Person(NameType name,AgeType age)
    {
        this->m_Name=name;
        this->m_Age=age;
    }
    void showPerson()
    {
        cout<<"name="<<this->m_Name<<"age="<<this->m_Age<<endl;
    }
    NameType m_Name;
    AgeType m_Age;
};
//1.類别範本沒有自動型別推導使用方式
void test01()
{
    //Person p("孫悟空",1000);//error 無法用自動型別推導
    Person<string> p("孫悟空",1000);
    p.showPerson();
}
//2.類别範本在模板引數列表中可以有預設引數
void test02()
{
    Person<string,int> p("豬八戒",999);
    p.showPerson();
}
int main() 
{
    test02();
   
    return 0;
}

總結:
類别範本使用只能用顯示指定型別方式
類别範本中的模板引數列表可以有預設引數

相關文章