c++ template

2023-01-09  本文已影响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);
}
上一篇下一篇

猜你喜欢

热点阅读