单选题
👁️ 浏览量:

试题题干

有关函数模版和模版函数说法错误的是(    )

A

函数模版只是对函数的描述,编译器不为其产生任何执行代码,所以它不是一个实实在在的函数

B

模版函数是实实在在的函数,它由编译系统在遇到具体函数调用时所生成,并调用执行

C

函数模版需要实例化为模版函数后才能执行

D

当函数模版和一般函数同名时,系统先去匹配函数模版,将其实例化后进行调用

参考答案

正确答案:

试题解析

为了提高效率,实现代码复用,C++提供了一种处理机制,即使用函数模板

当用实际的类型来实例化这种函数时,将函数模板与某个具体数据类型连用。编译器将以函数模板为样板,生成一个函数,即产生了模板函数,这个过程称为函数模板实例化。

可简单理解为:先定义函数模板,但不是具体函数,实际使用时才实例化生成函数产生模板函数。故ABC正确。

在函数和函数模板名字相同的情况下,C++编译器遵循以下先后顺序。 

1)先找参数完全匹配的普通函数(不是由模板实例化得到的模板函数)。
2)再找参数完全匹配的模板函数
3)然后找实参经过自动类型转换后能够匹配的普通函数
4)如果上面的都找不到,则报错。

 故D错。应该先找普通函数。