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

    //--------------------------------------------------------------------------------------------------------------//

    //---------泛型编程是一种思想,在C++中的体现如下:

    //---------模板(template):模板函数,模板类

    //--------STL(标准模板库):算法,容器,迭代器

    //--------------------------------------------------------------------------------------------------------------//

    泛型的基本思想:

    像类一样,泛型也是一种抽象数据类型,但是泛型不属于面向对象,它是面向对象的补充和发展。
    在面向对象编程中,当算法与数据类型有关时,面向对象在对算法的抽象描述方面存在一些缺陷。
    比如对栈的描述:
    class stack
    {

       push(参数类型)  //入栈算法

       pop(参数类型)   //出栈算法

    }
    如果把上面的伪代码看作算法描述,没问题,因为算法与参数类型无关。但是如果把它写成可编译的源代码,
    就必须指明是什么类型,否则是无法通过编译的。使用重载来解决这个问题,即对N种不同的参数类型写N个
    push和pop算法,这样是很麻烦的,代码也无法通用。
    若对上面的描述进行改造如下:
    首先指定一种通用类型T,不具体指明是哪一种类型。

    template <class T>

    class stack
    {

       push(T)  //入栈算法

       pop(T)   //出栈算法

    }

    这里的参数模板T相当于一个占位符,当我们实例化类stack时,T会被具体的数据类型替换掉????????????
    若定义对象S为statc类型,在实例化S时若我们将T指定int型则:
    这时候类S就成为:
    class S
    {
        push(int)  //入栈算法
        pop(int)   //出栈算法
    }
    这时我可以称class stack<参数模板 T>是类的类,通过它可以生成具体参数类型不同的类。
    ————————————————
    版权声明:本文为CSDN博主「yuanchunsi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/yuanchunsi/article/details/77050014

  • 相关阅读:
    图片的像素和位图相关的知识
    LeetCode第四十四题-字符串匹配
    LeetCode第四十三题-字符串相乘
    LeetCode第四十二题-可装雨水的容量
    LeetCode第四十一题-寻找数组中的最小的缺失正整数
    LeetCode第四十题-求组合所有可能性(2)
    LeetCode第三十九题-求组合所有可能性
    LeetCode第三十八题-报数
    LeetCode第三十七题-实现数独
    LeetCode第三十六题-判断九宫格是否有效
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/13211205.html
Copyright © 2011-2022 走看看