C/C++泛型编程的简单理解


C/C++中的重载函数、模板和泛型
重载函数:出现在相同作用域中的两个函数,如果具有相同的名字而形参表不同,则称为重载函数。

#include <stdio.h>

int add(int a, int b)
{
return a + b;
}

float add(float a, float b)
{
return a + b;
}

void main()
{
int a = 1, b = 2;
float c = 1.1,d = 2.5;
printf("a+b=%d\nc+d=%lf", add(a, b), add(c, d));
}

 

输出结果:
a+b=3
c+d=3.600000

注意:main函数是不可以重载的。

重载函数条件:1.相同的函数名
2.不同的形参列表
(对于函数的返回值没有影响,函数名相同,形参也相同,返回值相同的函数不是重载,而算是错误的声明)

泛型:
所谓泛型编程就是以独立于任何特定类型的方式编写代码。

函数模板(function template)如下

#include <iostream>
using namespace std;

template <typename T>//定义模板函数以template开始
T add(T a, T b)
{
return a + b;
}

int main()
{
int a = 1, b = 2;
float c = 1, d = 1.2;
int e = add(a, b);
float f = add(c, d);
printf("a+b=%d\nc+d=%lf", e, f);
return 0;
}

 

输出结果:
a+b=3
c+d=2.200000

类模板 如下:

#include <iostream>
using namespace std;

template <class T>
class operate {
public:
T a, b;
T add()
{
return a + b;
}
};

int main()
{
//inital
int a = 1, b = 2;
float c = 1.0, d = 2.2;
operate<int> add_int_num;
operate<float> add_float_num;

add_int_num.a = a;
add_int_num.b = b;
add_float_num.a = c;
add_float_num.b = d;

//get results
printf("(int)a+b=%d\n(float)a+b=%lf\n", add_int_num.add(), add_float_num.add());
return 0;

}

 

输出结果如下:
(int)a+b=3
(float)a+b=3.200000

在模板中关键字 typename、class具有相同的含义。

此处是对泛型编程的简单的运用,具体的理解还是需要碰到比较大的泛型编程的实际应用。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM