首页 > 试题广场 >

下列的模板说明中,正确的有?

[不定项选择题]
下列的模板说明中,正确的有( )
  • template <typename T1, typename T2>
  • template <class T1, T2>
  • template <class T1, class T2>
  • template <typename T1; typename T2>
推荐
【正确答案】A C
【解析】B选项中有一个没有类型说明
D选项中出现封号

class 用于定义类,在模板引入 C++ 后最初定义模板的方法为:template<class T>,这里 class 关键字表明 T 是一个类型,后来为了避免 class 在这两个地方的使用可能给人带来混淆,所以引入了 typename 这个关键字,它的作用同 class 一样表明后面的符号为一个类型,这样在定义模板的时候就可以使用下面的方式了:template<typename T>,<> 中多个泛型之间使用英文逗号隔开。

C++ 模板知识点讲解】
更多C++基础专业知识讲解,点击链接即可查看
编辑于 2021-11-17 13:00:44 回复(0)
wei shen me wo zong da bu chu lai han zi !!
发表于 2015-08-28 22:19:22 回复(19)
class用于定义类,在模板引入c++后,最初定义模板的方法为:template<class T>,这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typename这个关键字,它的作用同class一样表明后面的符号为一个类型,这样在定义模板的时候就可以使用下面的方式了: template<typename T>.在模板定义语法中关键字class与typename的作用完全一样。
发表于 2016-03-13 12:42:15 回复(2)
无代码无真相。。
答案: C A
B中有一个没有类型说明’
D中出现分号。
只有C A符合规范。

下面 vs2010编译通过

编辑于 2021-11-17 13:00:44 回复(3)

函数模板的格式:

template <class 形参名class 形参名,......返回类型 函数名(参数列表)

{

函数体

}

其中templateclass是关见字,class可以用typename 关见字代替,在这里typename 和class没区别,<>括号中的参数叫模板形参,模板形参和函数形参很相像,模板形参不能为空一但声明了模板函数就可以用模板函数的形参名声明类中的成员变量和成员函数,即可以在该函数中使用内置类型的地方都可以使用模板形参名。模板形参需要调用该模板函数时提供的模板实参来初始化模板形参,一旦编译器确定了实际的模板实参类型就称他实例化了函数模板的一个实例。比如swap的模板函数形式为

template <class T> void swap(T& a, T& b){},

当调用这样的模板函数时类型T就会被被调用时的类型所代替,比如swap(a,b)其中abint 型,这时模板函数swap中的形参T就会被int 所代替,模板函数就变为swap(int &a, int &b)。而当swap(c,d)其中cddouble类型时,模板函数会被替换为swap(double &a, double &b),这样就实现了函数的实现与类型无关的代码。

2、注意:对于函数模板而言不存在 h(int,int) 这样的调用,不能在函数调用的参数中指定模板形参的类型,对函数模板的调用应使用实参推演来进行,即只能进行 h(2,3) 这样的调用,或者int a, b; h(a,b)


发表于 2016-09-24 14:06:57 回复(0)
AC
D的分号是错的;
B的参数T2前加class 或者typename
编辑于 2015-03-26 20:39:09 回复(0)
template <typename T1, typename T2>;
template <class T1, typename T2>;
template <class T1, class T2>;
都可以

发表于 2019-02-20 20:12:19 回复(0)
参考其他人的:class用于定义类,在模板引入c++后,最初定义模板的方法为:template<class T>,这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typename这个关键字,它的作用同class一样表明后面的符号为一个类型,这样在定义模板的时候就可以使用下面的方式了: template<typename T>.在模板定义语法中关键字class与typename的作用完全一样。
发表于 2018-04-09 21:15:16 回复(0)
首先在模板中, 通过typename 关键字和 class 来进行泛化,来作为模板参数
如template< typename  T>  或者template<class T>,

当多个参数而且类型不同,
如上题所示 template<typename T, typename T1>   ,
或者template<class  T, class T1>;

二选项 错在, 使用了我们定义变量的通常方法,如int   a ,b ;并且将这个用到参数定义的地方,语法上是错的。
四选项错在,作为,参数中间,以逗号分开,而这里使用了分号。
发表于 2018-03-11 12:23:08 回复(0)
。。。。。没看清是分号
发表于 2018-01-20 21:03:31 回复(0)
我就想知道有没有选BD 按选错误的做的
发表于 2017-08-04 15:16:02 回复(0)
A中的逗号明明是中文字符,不对啊。答案应该是C。
发表于 2015-08-13 17:28:14 回复(0)
A的逗号没错吗?
发表于 2015-08-01 17:49:41 回复(0)
坑,答案A中的逗号是中文逗号
发表于 2015-07-12 15:24:23 回复(0)
唉,没看见分号
发表于 2015-04-30 21:39:21 回复(0)
正确答案是:template <class T1, class T2> 和 template <typename T1, typename T2>
发表于 2014-10-01 11:26:27 回复(3)