类模板

类模板的简述

之前的函数模板文章中我们将泛型的思想应用到函数中,现在我们将泛型的思想应用于类,类模板就是为数据结构诞生的,一些类主要用于存储和组织数据元素,类中数据组织的方式和数据元素的具体类型无关,如:数组类,链类,Stack类,Queue类…C++中将模板的思想应用于类,使得类的实现不关注数据元素的具体类型,而只关注类所需要实现的功能,类模板在使用时只能显示指定类型
C++中的类模板
—以相同的方式处理不同的类型
—在类声明前使用template进行标识
—用于说明类中使用的泛指类型T

template <typename T>
class Operator
{
   
  public:
  T op(T a,T b);
};

类模板的应用
—只能显示指定具体类型,无法自动推导
—使用具体类型定义对象

Operator <int> op1;
Operator <string> op2;
int i = op1.op(1,2);
string s = op2.op("ttt","zzz");


代码:

#include <string>
#include <iostream>
using namespace std;
template <typename T>
class Operator
{
   
   public:
   T add(T a,T b)
   {
   
     return a+b;
   }
   T minus(T a,T b)
   {
   
     return a-b;
   }
   T multiply(T a,T b)
   {
   
     return a*b;
   }
   T divide(T a,T b)
   {
   
     return a/b;
   }
};
int main()
{
   
   Operator <int>op;
   cout<<op.add(1,2)<<endl;
   Operator <string>op1;
   cout<<op1.add("I'm","happy")<<endl;//二次编译,针对每个独立的成员函数来编译的
   //cout<<op1.minus("I'm","sad")<<endl;类模板的二次编译不通过,在C++里面string类对象的相减操作是没有定义的
   return 0;
}

例子:

sice@sice:~$ ./a.out 
3
I'mhappy

可以看出类模板的应用也是提高代码的复用性,更加强大==,对于上面注释的语句我们需要在全局重载操作符"+"函数来实现==

类模板的工程应用规范

类模板必须在头文件中定义
类模板不能分开实现在不同的文件中
类模板外部定义的成员函数需要加上模板<>声明
将上述代码规范化:
a.cpp

#include 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值