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