二级C 重点难点分析:模板[2]

2008-02-23 05:39:56来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

<模板形参表声明>中声明的虚拟类型参数能够用做:

 函数的返回值类型
 函数的形参的类型
 函数体内变量的类型

例14.1.1 下列是模板声明的开始部分,其中正确的是( )。[2004年9月 选择第30题]
A.template <T> B.template <class T1,T2>
C.template <class T1,class T2> D.template <class T1;class T2>
答案:C

例14.1.2 下面的函数模板定义中错误的是( )。[2005年4月 选择第24题]
A.template<class Q> B.template<class Q>
Q F(Q x){return Q x;} Q F(Q x){return x x;}
C.template<class T> D.template<class T>
T F(T x){return x*x;} bool F(T x){return x>1;}
解析:各个选项中声明的Q和T都是虚拟类型参数。函数模板形参表中声明的虚拟类型参数能够用做:
 函数的返回值类型
 函数的形参的类型
 函数体内变量的类型
选项B、C和D符合以上三种用法。而选项A让虚拟类型参数Q直接参和运算是错误的。虚拟类型是具体类型(如int型,double型等)的抽象。我们知道,int本身并不能直接参和数学运算,但是由他定义的int型变量或int型参数能够直接参和运算。虚拟类型Q和T本身也不能直接参和运算,但是由他们定义的“T类型”或“Q类型”的参数x能够参和运算。所以,选项A中“Q x”的表达是错误的。
答案:A

14.1.2 考点2:模板函数

函数模板中声明的函数称为模板函数。
调用一个模板函数的格式如下:
函数名 <模板实参表> (函数实参表);

函数名(函数实参表);
第二种格式中省略了任何的模板实参,使用这种格式是需要一定条件的(详见考点4)。
类模板的成员函数都是模板函数。

例14.1.3 以下函数模板max的功能是:返回数组a中最大元素的值。请将横线处缺失部分补充完整。[2005年4月 填空第14题]
template <typename T>
T max (T a[], int n)
{
T m = a[0];
for (int i = 1; i < n; i )
if (a[i]>m) ;
return m;
}
解析:本题考查模板函数的定义。在编写函数体时,模板函数和普通函数是相同的。根据题意,返回的m值应该是a中最大元素的值,所以当a[i]>m时,应该将较大的a[i]值赋给m。在遍历数组a[]后,最终m就保存了数组a[]中最大元素的值。
答案:m=a[i]
  本章节内容来自希赛全国电脑等级考试用书《电脑等级考试考点分析、题解和模拟——二级C 语言》。(购书请见 :http://shop.csai.cn/itbook/itbookinfo.asp?lbbh=10032460)

[1] [2] [3] [4]




标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 电脑等级考试二级C 重点难点分析

下一篇: 二级C 重点难点分析:模板[3]

热门词条
热门标签