美文网首页
c++ template

c++ template

作者: 笑破天 | 来源:发表于2023-01-09 18:49 被阅读0次

    1、typename 与 class
    在模板引入 c++ 后,最初定义模板的方法为:template<class T>......。这里 class 关键字表明T是一个类型,后来为了避免 class 在这两个地方的使用可能给人带来混淆,所以引入了 typename 这个关键字,它的作用同 class 一样表明后面的符号为一个类型,这样在定义模板的时候就可以使用下面的方式了:template<typename T>......
    在模板定义语法中关键字 class 与 typename 的作用完全一样。

    2、模版
    模板是实现代码重用机制的一种工具,实质就是实现类型参数化,即把类型定义为参数。C++提供两种模板:函数模板,类模板。

    1.1、函数模版

    //T可以是int、long、double
    template<typename T> T mymax(T a, T b){
        a = a > b ? a:b;
        return a;
    }
    int reuslt1 = mymax<int>(10, 20); //<int>省略的话,类型会自动转换,但效率和安全性变低了,建议加上
    printf("reuslt1=%d\n", reuslt1);
    

    1.2、类模板

    #include <iostream>
    template <typename T> class Op{
    public:
        T peocess(T v){ return v * v; }
    };
     
    int main() 
    {
        Op<int> opInt;//生成一个int类型操作的实例
        Op<double> opDouble;
        int reuslt1 = opInt.peocess(5);
        double reuslt2 = opDouble.peocess(0.5);
        printf("output: int:reuslt1=%d, double: reuslt2=%f\n", reuslt1, reuslt2);
    }
    

    相关文章

      网友评论

          本文标题:c++ template

          本文链接:https://www.haomeiwen.com/subject/wxiucdtx.html