c++中在函数模版或函数类型中类型参数用什么声明
时间: 2024-02-25 14:53:58 浏览: 23
在C++中,在函数模板或函数类型中,类型参数通常使用关键字 `template` 和关键字 `typename`(或关键字 `class`)来声明。例如,以下是一个使用类型参数的函数模板的简单示例:
```c++
template <typename T>
void print(const T& value) {
std::cout << value << std::endl;
}
```
在上面的示例中,`T` 是一个类型参数,它表示一个未知的类型。函数模板 `print()` 接受一个类型为 `T` 的参数,并将其打印到标准输出流中。在调用 `print()` 函数时,编译器会根据传递给函数的实参类型来推断 `T` 的类型。
相关问题
在函数模版或函数类型中类型参数用什么声明
在函数模板或函数类型中,类型参数通常使用关键字 `template` 和关键字 `typename`(或关键字 `class`)来声明。例如,以下是一个使用类型参数的函数模板的简单示例:
```c++
template <typename T>
void print(const T& value) {
std::cout << value << std::endl;
}
```
在上面的示例中,`T` 是一个类型参数,它表示一个未知的类型。函数模板 `print()` 接受一个类型为 `T` 的参数,并将其打印到标准输出流中。在调用 `print()` 函数时,编译器会根据传递给函数的实参类型来推断 `T` 的类型。
C++中使用函数模板进行两个不同类型的数值计算
函数模板可以用来实现对不同类型的数值进行计算。以下是一个简单的函数模板例子,用于计算两个不同类型的数值相加:
```c++
template <typename T, typename U>
auto add(T a, U b) -> decltype(a + b) {
return a + b;
}
```
这个模板函数接受两个类型参数 `T` 和 `U`,并且返回 `a+b` 的结果,该结果的类型是根据 `a` 和 `b` 的类型推导出来的。例如,如果你调用 `add(3, 4.5)`,那么模板函数会返回 7.5,因为 `3` 是 `int` 类型,而 `4.5` 是 `double` 类型。
以下是一个完整的例子:
```c++
#include <iostream>
template <typename T, typename U>
auto add(T a, U b) -> decltype(a + b) {
return a + b;
}
int main() {
std::cout << add(3, 4.5) << std::endl; // 输出 7.5
std::cout << add(3.2, 4.5) << std::endl; // 输出 7.7
std::cout << add(3, 'a') << std::endl; // 输出 100 (ASCII码值)
return 0;
}
```