是否有區別,例如元編程的預期,在兩個 聲明之間?typedef模板類的聲明
template<typename T>
struct matrix {
typedef matrix self_type; // or
typedef matrix<T> self_type;
};
謝謝
是否有區別,例如元編程的預期,在兩個 聲明之間?typedef模板類的聲明
template<typename T>
struct matrix {
typedef matrix self_type; // or
typedef matrix<T> self_type;
};
謝謝
在這種特殊情況下(類模板中),matrix
是matrix<T>
的簡寫。當你在80個欄目中填寫所有內容時,整天寫很多毛茸茸的模板,速記是值得歡迎的。
請注意,您也可以縮寫方法的參數:
template <typename T>
struct matrix
{
typedef matrix my_type;
matrix(); // constructor is abbreviated too
matrix& operator=(matrix);
};
// Method argument types can be abbreviated too
// but not result types.
template <typename T>
matrix<T>& matrix<T>::operator=(matrix m)
{
// ...
}
請注意,術語是*注入類名*,原始模板可以使用像':: matrix'這樣的限定名稱進行訪問。 – 2010-07-20 20:25:55
他們都指的是同一類型。 我可以看到的唯一區別是從性能角度來看: 我想(取決於編譯器實現),矩陣本身就是指類本身,因此它不需要環境中的任何東西。矩陣正在討論由T(即矩陣)模板化的模板類矩陣,因此它可能需要編譯器提供更多的推導機制。但我只是猜測,我從來沒有讀過任何關於這個的東西。
通過'結構矩陣 {'我想你的意思'結構矩陣{'。 –
kennytm
2010-07-20 19:56:32
@ Kenny謝謝修復 – Anycorn 2010-07-20 19:57:23