模板別名

努力的小帶土發表於2020-11-08

為類别範本型別指定別名,將會很方便。比如你可以使用最常規的方法指定別名即typedef,具體程式碼如下所示:

typedef std::array<double,12> arrd ;
typedef std::array<int,12> arri ;
typedef std::array<string,12> arrst ;
arrd gallons ; //gallons 是array(double,12)型別的變數
arri days ; //days 是array(int,12)型別的變數
arrst months ; //months 是array(string,12)型別的變數

假如你常常使用上述方法指定別名,那麼你可能是忘記了C++(11)的新功能——使用模板提供一些列別名,具體程式碼如下所示:

template<Type>
using arrtype = std::array<Type,12> ;
arrtype<double> arrd ;
arrtype<int> arri ;
arrtype<string> arrst ;

總而言之就是使用arrtype<Type>去代替 std::array<Type,12> 。 

並且C++11允許將using語法用於非模板的別名申明,這種語句的可讀性比typedef更高。

typedef const char* pc1 ;
using pc2 = const char* ;

 

相關文章