的说我有这样的代码:使用模板<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