zoukankan      html  css  js  c++  java
  • 泛型编程

      众所周知,C++,具有面向对象的编程能力。然而C++不仅是一个面向对象程序语言,它还使用与泛型编程(Generic Programming)。这项技术可以写出高效率并可重复运用的软件组件。

      泛型编程是一种新的编程思想,它基于模板技术,有效地将算法与数据结构分离,降低了模块间的耦合度。

      泛型编程关注与产生通用的软件组件,让这些组件在不同的应用场合都能很容易的重用。在C++中,类模板和函数模板是进行泛型编程极为有效的机制。有了这两大利器,实现泛型化并不需要付出效率的代价。

      下面举例说明什么事泛型编程。

      泛型编程指编写完全一般化并可重复使用的算法,其效率与针对某特定的数据类型而设计的算法相同。所谓泛型,是指具有在多种数据类型上皆可操作的含意,在C++中实际上就是使用模板实现。

      

     1 int max(int a,int b)
     2 {
     3     return a>b?a:b;
     4 }
     5 
     6 
     7 float max(float a,float b)
     8 {
     9     return a>b?a:b;
    10 }
    11 
    12 
    13 double max(double a,doubleb)
    14 {
    15     return a>b?a:b;
    16 }

      可以看出,上面写了3个重载函数,它们的区别仅仅在于类型(参数及返回值)不同,而函数体完全一样。

      而使用模板时,程序代码如下所示:

    1 template <class T>   //class也可用typename替换
    2 T max(T a,T b)
    3 {
    4     return a>b?a:b;
    5 }

      这里的class不代表对象的类,而是类型(可以用typename替换)。这样max函数的各个参数以及返回值类型都是T,对于任意类型的两个数,都可以调用max函数求大小,测试代码如下:

    1 int main()
    2 {
    3     cout<<max(1,2)<<endl;    //隐式调用int类型的max
    4     cout<<max(1.1f,2.2f)<<endl;    //隐式调用float类型的max
    5     cout<<max(1.11l,2.22l)<<endl;    //隐式调用double类型的max
    6     cout<<max('A','C')<<endl;      //隐式调用char类型的max
    7     cout<<max<int>(1,2.0)<<endl;   // 必须指定int类型
    8     return 0;
    9 }    

      通过这个例子我们了解的泛型编程。显然,使用泛型编程(模板)极大地增加了代码的重用性。

      

  • 相关阅读:
    进程池-非阻塞式
    进程
    单例模式
    Python内置函数之open()
    Python内置函数之len()
    Python内置函数之isinstance()
    Python内置函数之input()
    可迭代对象,迭代器(生成器)区别
    Tomcat控制台输出
    Python内置函数之format()
  • 原文地址:https://www.cnblogs.com/galuo/p/3046702.html
Copyright © 2011-2022 走看看