Template - C++
跳到导航
跳到搜索
模板(Template)
指C++程序设计设计语言中采用类型作为参数的程序设计,支持通用程序设计。
- typename
- class
对于基础类型,如:int, char等来说,两者实际上可以说没有区别。按 C++ 标准来说,template<typename T> 用于基础数据类型,typename 指类型名,T 可以取 char int double 等。template<class T> 用于类,T 可以取任何类。
特例:当 T 是一个类,而这个类又有子类(假设名为 innerClass) 时,应该用 template<typename>。如定义:typename T::innerClass myInnerObject; 这里的 typename 告诉编译器,T::innerClass 是一个类,程序要声明一个 T::innerClass 类的对象,而不是声明 T 的静态成员,而 typename 如果换成 class 则语法错误。
Example:
- 计算 int 数组的长度
int array_len(const int& arr) {
return sizeof(arr)/sizeof(arr[0]);
}
- 计算任意数据类型数组的长度
template <class T>
int array_len(const T& arr) {
return sizeof(arr)/sizeof(arr[0]);
}