的說我有這樣的代碼:使用模板<typename>
#include <iostream>
template<typename>
void printnum(int i) {
std::cout<<"in int method:"<<std::endl;
std::cout<< i<<std::endl;
}
template<typename>
void printnum(char i) {
std::cout<<"in char method:"<<std::endl;
std::cout<<(int)i<<std::endl;
}
int main() {
printnum<int>(2);
printnum<char>(3);
}
輸出:
in int method:
2
in int method:
3
我對這個測試代碼的意圖是要確認/未確認我的使用(自然)的認識的template<typename>
模板。因爲給定的模板類型沒有參數,所以我認爲這樣的結構將有助於重載分辨率。也就是說,如果沒有模板註釋,很顯然我會得到上面的輸出。但是通過模板註釋,我可能會認爲我可能會強制編譯器(3-call
)printnum()
函數的char-variant
(事實並非如此)。
所以我一般的問題是:template<typename>
構造的用途是什麼?
其用途是用一個模板參數定義一個模板:一個類。就是這樣。 「2」和「3」都是「int」,因此採用「int」參數的函數被選中。模板參數不是一個因素。 –
肯定有「使用」。 C++庫中有許多模板將一個類作爲參數。 –
嗯,是的,但這並沒有回答 – FloriHe