单选题
C++中,如何定义一个函数模板?
A
template
B
void func
C
func
D
以上都不是
答案解析
正确答案:A
解析:
好的,让我们来详细解析这道题目。
### 题目背景
在C++中,函数模板(Function Template)是一种允许我们编写通用函数的方法,这些函数可以处理多种数据类型。通过使用模板,我们可以避免为每种数据类型重复编写相同的函数代码。
### 选项分析
#### A. `template void func(T x);`
- **解析**:这是正确答案。`template` 是定义模板的关键字和语法,`typename` 关键字用于指定模板参数的类型。`void func(T x);` 是函数的声明部分,其中 `T` 是模板参数,表示函数可以接受任何类型的参数 `x`。
- **示例**:
```cpp
template
void func(T x) {
std::cout << "Value: " << x << std::endl;
}
int main() {
func(10); // 调用时自动推导 T 为 int
func(3.14); // 调用时自动推导 T 为 double
return 0;
}
```
#### B. `void func(T x);`
- **解析**:这是错误的。在C++中,模板参数列表必须放在 `template` 关键字后面,而不是在函数名后面。正确的语法应该是 `template` 而不是 `func`。
- **示例**:不适用,因为语法错误。
#### C. `func() { }`
- **解析**:这是错误的。首先,模板参数列表必须放在 `template` 关键字后面。其次,函数体应该包含在 `{}` 中,但这里没有函数参数。
- **示例**:不适用,因为语法错误。
#### D. 以上都不是
- **解析**:这是错误的。选项A是正确的,所以这个选项不成立。
### 为什么选A
选项A正确地使用了C++的模板语法,定义了一个可以接受任意类型参数的函数模板。其他选项要么语法错误,要么不符合C++的模板定义规范。
