template<class T>这种用法在C++中有吗?什么意思?怎么用?

如题所述

可以
template < typename T >
T max( T a, T b )
{
return a < b ? b : a;
}
这个 max 函数就是一个模板函数,它可以传入一个 “类型”的参数,以便实现任意类型求最大值的效果。假设我们这样使用它:
int x=5, y=10;
int z=max <int>( x, y );
这时候发生了什么呢?我们传入的“类型参数”是int,因此编译器在编译这段代码时会使用 int 来构造一个新函数:
int max( int a, int b )
{
return a < b ? b : a;
}
后面的事就和编译普通的函数一样了,C++编译器继续使用强类型系统编译这个函数,由强类型系统来检查这个函数是否正确。
这个过程叫做模板的“特化”,它发生在编译期,当编译器发现模板函数、模板类被使用(注意,不是定义)的时候进行的。这个系统实际上比较像宏,但是比宏更为智能。
很明显,编译器必须知道模板如何特化这个函数,因此模板函数的实现,必须在“使用点”之前,因此模板库只能通过头文件库的形式来提供。

参考资料:http://apps.hi.baidu.com/share/detail/18377176

温馨提示:内容为网友见解,仅供参考
无其他回答

template <class T> 的用法!
temolate <class T>\/\/告诉编译器T是一个(模板)类型 Node<T>* Node<T>::NextNode()const { return next;} 所以每次类的实现前面都要写 “template <class T>” !还有多文件的时候,理论上和单文件的时候没有任何区别。但是注意:模板类或者函数最好不要写成多文件,因为这种“分离模型”虽然...

template <class T>到底是什么意思啊?求解...
这是建立模板的固定形式,template即模板,class指类别,T是类别的统称,可以使用的数据类型有int、char,float,double等等。举个例子:template < typename T >T min( T a, T b ){return a > b ? b : a;}这个 max 函数就是一个模板函数,它可以传入一个 “类型”的参数,以便实现任意类型...

c++中template<class T>模板类的语法是怎样的
void fun(){} fun(1);fun(2.3);编译器就只会给你生成个void fun<int>()和void fun<double>(), 这种检查是在编译时期进行的.比如用这一特性来搞个compile time check, 也叫static check, 比如morden C++ design上的:template <bool> struct static_assert;template <> struct static_assert<...

C++ 錿emplate<class T>和template<typename T>有区别吗
实际上可以说没有区别。按 C++ 标准来说,template<typename T> 用于基础数据类型,typename 指类型名,T 可以取 char int double 等。template<class T> 用于类,T 可以取任何类。但是这里有一个问题,结构体应该用 typename 还是 class? 结构体肯定不是基础数据类型,但也不是类。所以实际情况是,...

c++ 模板类 后面每个方法前的template <class Type>有什么意义 对每个...
template<class T> int i; \/\/ 错误,不允许插入别的语句 T max(T x,T y)(2)模板函数类似于重载函数,只不过它更严格一些。函数被重载的时候,在每个函数体内可以执行不同的动作。但同一个函数模板实例化后的所有模板函数都必须执行相同的动作。例如,下面重载函数就不能用模板函数代替,因为...

...用啊?为什么template尖括号里有变量?(template<int x,int y>...
非类型模板template<int T>同理,只不过它的泛型T不是类型而是int型常量,例如1、3、10。非类型模板的典型应用就是数组长度定义,众所周知int a[N]这种语句中N必须是一个编译期常量否则无法通过编译,要实现定义不同长度的数组,就可以使用template<int T> void foo(){double a[T]}这样的写法,...

C++中,template<class T>是定义了一个模版T,那template<int T>是...
这是模板的特化,有时候特化是必须的,编译器会选取一个最匹配的类型生成这个类

C++中模板是什么东西
模板类英文为class template,其中文译为模板类,实际上指的是类的模板。模板类如同模具一般,当输入参数后生成特定的类实例,也被称为实例化。这一设计目的是为了减少代码冗余。例如,我们能够利用如下的代码实现两个数b与c的交换:a = b; b = c; c = a;此交换过程与a、b、c的具体类型无关,...

template<class T , int MaxSize>,int MaxSize有什么作用?MaxSize被定义...
C++中,模版可以分为两类,一个是函数模版,另外一个是类模版。模板充分体现了泛型思想和设计方法的优势,能极大地提高代码的灵活性,大大降低了工作量。再看看两种模板的定义形式:1. 函数模板 template <typename 模板参数列表 ...> 函数返回值类型 函数名(函数形参列表 ...)注意,上面是两句,可以...

C++friend class <T>是什么意思
把模板类list<T>声明为友元类 在你的整个代码之前加上List的声明:template <class T> class List;

相似回答