c++ template

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);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容