已知函数模板定义如下: template T max(T x,T y) { return x>y?x:y; } 下列叙述中,错误的是( )。

admin2017-02-18  28

问题 已知函数模板定义如下:
    template
    T max(T x,T y)
    {
    return x>y?x:y;
    }
    下列叙述中,错误的是(    )。

选项 A、此函数模板有一个模板形参
B、此模板实参类型必须可以用运算符>比较大小
C、此函数模板实例化时,模板实参只能是基本类型
D、编译时遇到对max的调用表达式,将生成模板实例

答案C

解析 题意中的函数模板有一个模板形参T,它是类型形参,选项A正确;模板函数max()的两个参数x、y的类型都是T,在函数体内需要对x、y使用“>”进行大小比较,所以模板实参类型必须支持用运算符“>”比较大小,选项B正确;只要模板实参类型支持运算符“>”比较大小和赋值运算,那么即使T类型是复杂类型,该模板也是可以实例化的,选项C错误;使用函数模板,编译器在编译过程中,当遇到对max()函数的调用表达式时,编译器通常会推断出模板实参,然后进行模板实例化,生成模板实例,选项D正确。本题答案为C选项。
转载请注明原文地址:https://kaotiyun.com/show/yIAp777K
0

最新回复(0)