数据结构--泛型编程-创新互联

一 泛型编程的概念

泛型的定义主要有以下两种:
1.在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。(这是当今较常见的定义)
2.在程序编码中一些包含参数的类。其参数可以代表类或对象等等。(人们大多把这称作模板)不论使用哪个定义,泛型的参数在真正使用泛型时都必须作出指明。
一些强类型编程语言支持泛型,其主要目的是加强类型安全及减少类转换的次数,但一些支持泛型的编程语言只能达到部分目的。
泛型编程是一种不考虑具体数据类型的编程方式,可以由下面的Swap函数来进行了解

成都创新互联于2013年创立,先为禄丰等服务建站,禄丰等地企业,进行企业商务咨询服务。为禄丰企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
void Swap(T& a,T& b)
     {
         T t=a;
         a=b;
         b=t;
     }

在这个例子中,Swap泛型的写法中的T不是一个具体的数据类型,而是泛指任意的数据类型

二 C++中的函数模板

一种特殊的函数可用不同的类型进行调用,看起来和普通的函数很相似,区别是类型可被参数化

  template
   void Swap(T& a,T& b)
     {
         T t=a;
         a=b;
         b=t;
     }

函数模板的语法规则:
template关键字用于声明开始进行泛型编程
typename关键字用于声明泛指类型
函数模板使用有自动类型推导使用和具体类型调用两种

int a=0;
int b=1;
Swap(a,b);//自动推导

float c=2;
float d=3;
Swap(c,d);//显示调用

三 C++中的类模板

C++中的类模板以相同的方式处理不同的类型,在类声明前使用template进行标识
用于说明类中使用的泛指类型T

template 
class Book
{
    public:
        T Bo(T a,T b);
};

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

Bookbook1;
Bookbook2;
Bookbook3;

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:数据结构--泛型编程-创新互联
地址分享:http://scyanting.com/article/cdisec.html