C++泛型编程-举例
就是C++里面说的函数模板和类模板,我们以前写C语言的时候,不同的类型参数,可能要写不同的函数。
C++的模板出现之后,就可以实现函数模板,函数模板可以接纳不同的类型,然后这些类型都可以调用同一个函数,而且不会出错。
泛型不属于面向对象,它是面向对象的补充和发展
泛型,也就是任何类型,也就是不依赖于具体的数据类型
通常,我们的操作都是都是依赖于具体的数据类型的。如
#include <stdio.h> int add(int a,int b)//此函数只能求两个整数的和,返回值是整数 ,不能利用此函数求浮点的和,必须另写一个函数来完成求浮点数的和 { return a+b; } int main() { int he; he=add(3,4); he=add(5.6,4.7);//指定浮点数计算时仍根据函数的要求转换为整数再计算 printf("%d",he); }
结果如下:
下面的代码得保存为.cpp才可以正常编译,如果保存为.c不能正常编译
下面的代码定义的mmax函数,可以求int float double char类型的比较结果
#include <stdio.h> template <typename T> T mmax(T a,T b) { return a>b?a:b; } int main() { int res=mmax(1,2); double re=mmax(1.4,5.1); float rea=mmax(4.4,-35.1); //string stra=mmax("hello","world!"); //printf("%x\n",&stra); printf("%d\n",res); printf("%f\n",re); printf("%lf\n",re); printf("%f\n",rea); printf("%lf\n",rea); printf("%d\n","hello">"world"); printf("%s",mmax("hello","world!")); //printf("%s",stra); }
结果如下: