赞
踩
什么是模板类:C++发展到一定层次后,必然有部分代码存在仅传参的数据类型不同而内容一致的情况。因此,C++为解决此类场景,特推出模板类的使用。
模板类是一种泛型技术,即与数据类型无关的通用程序设计技术。可以使我们设计出独立于数据类型的程序。模板类本身不占空间,当编译器执行到模板参数的调用时,当在程序中赋予具体的数据类型后并调用时则占用空间。
函数模板与模板声明间不能有任何语句,注释也不可以有。
常见的模板包含函数模板与类模板。模板的声明中class含义同typenamec,class并不是表明后续的类型名是一个类,而表示后续是一个通用的类型说明符。
一、函数模板
函数模板针对仅参数类型不同的函数。
函数模板的格式:
template <class 类型名,class类型名>
返回值 函数名(形参列表)
{
// 函数体
}
示例:
template <class T>
void Cat(T& a, T& b)
{
// 实现
}
调用:
Cat(1,2); // 函数模板直接调用,模板自动识别参数类型
(4条消息) C++函数模板详解及注意事项_io无心的博客-CSDN博客
二、类模板
类模板针对仅数据成员和成员函数类型不同的类。
类模板的格式:
template <class 类型名, class 类型名>
class 类名
{
// 类实现
}
- #include <iostream>
- using namespace std;
-
- template <typename T>
- class A
- {
- public:
- //函数的参数列表使用模板类型
- A(T t = 0){
- this->t = t;
- }
- //成员函数返回值使用模板类型
- T& getT(){ // C++中引用的使用
- return t;
- }
-
- private:
- //成员变量使用模板类型
- T t;
- };
-
- void printA(A<int>& a) {
- cout << a.getT() << endl;
- }
-
- int main(void) {
- //1.模板类定义类对象,必须显示指定类型
- //2.模板种如果使用了构造函数,则遵守以前的类的构造函数的调用规则
- A<int> a(666); // 构造函数仅在创建对象时使用 类名<参数类型> 对象名;
- cout << a.getT() << endl;
-
- //模板类做为函数参数
- printA(a);
- system("pause");
- return 0;
- }
666
666
注意:
模板的声明或定义只能在全局,命名空间或类范围内进行。即不能在局部范围,函数内进行,比如不能在main函数中声明或定义一个模板。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。