在 C++ 中使用类 T 的一个优点是减少在函数中重新定义数据类型的时间,如果这些数据类型是在其他函数中定义的,例如,在 int main 中。
template <class T>
void showabs(T number)
{
if (number < 0 )
number = -number;
cout << number << endl;
return 0;
}
int main()
{
int num1 = -4;
float num2 = -4.23f;
showabs(num1);
showabs(num2);
return 0;
}
所以在这种情况下,没有类T,对于每一种数据类型,我们都必须添加其对应的数据类型条件,即对于int,另一组if语句,对于float,另一组if语句。
我说的对吗?
最佳答案
它不一定是 class T
。它可以是 class Key
或任何你想要的(你也可以使用 typename
代替 class
)。正确的术语应该是函数模板。使用函数模板消除了为可能传递给它的每种类型重新定义函数的要求。因此,如果您不使用模板,则必须定义两个函数:
void showabs(float number){
if (number < 0 ) number = -number;
cout << number << endl;
}
void showabs(int number){
if (number < 0 ) number = -number;
cout << number << endl;
}
这意味着很多重复的代码。在某些情况下,您可以使用 void*
指针(您在 C 语言中经常看到这种情况),但这样做会导致界面丑陋并且没有类型安全性。
值得注意的是,在现实中,你的两个函数调用
showabs(num1); //showabs<int>(num1);
showabs(num2); //showabs<float>(num2);
实际上指向两个不同的函数,一个接受 float ,一个接受整数。因此模板允许编译器为我们进行复制和粘贴(以更智能的方式)。
关于c++ - C++ 中的 T 类(您的定义),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2522343/