Template - C++

来自牛奶河Wiki
Admin讨论 | 贡献2022年12月27日 (二) 15:20的版本 (创建页面,内容为“=== 模板(Template) ===   指C++程序设计设计语言中采用类型作为参数的程序设计,支持通用程序设计。 * typename * class   对于基础类型,如:int, char等来说,两者实际上可以说没有区别。按 C++ 标准来说,template<typename T> 用于基础数据类型,typename 指类型名,T 可以取 char int double 等。template<class T> 用于类,T 可以取任何类。   特例:当 T 是一…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

模板(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]);

}