程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++中函數模板的用法具體解析

C++中函數模板的用法具體解析

編輯:關於C++

C++中函數模板的用法具體解析。本站提示廣大學習愛好者:(C++中函數模板的用法具體解析)文章只能為提供參考,不一定能成為您想要的結果。以下是C++中函數模板的用法具體解析正文


界說

我們曉得函數的重載可以完成一個函數名多用,將功效雷同或許相似函數用統一個名來界說。如許可以簡化函數的挪用情勢,然則法式中,依然須要分離界說每個函數。

C++供給的函數模板可以加倍簡化這個進程。

所謂函數模板現實上是樹立一個通用函數,其涵涵素類型額形參類型不詳細指定,用一個虛擬的類型來代表,這個通用函數就稱為函數模板。

但凡函數體雷同的函數都可以用這個模板來取代,不用界說多個函數,只須要在模板中界說一次便可。在挪用函數時,體系會依據實參的類型來代替模板中的虛擬類型,從而完成了分歧函數的功效。

界說函數模板的普通情勢為:

template <typename T>
通用函數界說

或許

template <class T>
通用函數界說

上面,我們來比較一下應用通俗函數,應用函數的重載,和應用函數的模板時的情形:

該段代碼用於處理不消的類型數據相加的成績

應用多個通俗函數
=============示例代碼1.1==============

#include<iostream>
using namespace std;
int int_add(int a,int b)                              //界說函數int_add用於int型數據相加
{
 int c;
 c=a+b;
 return c;
}
double dou_add(double a,double b)     //界說函數dou_add用於double型函數相加
{
 double c;
 c=a+b;
 return c;
}
int main()
{
 cout<<int_add(5,3)<<endl;              //挪用int_add函數
 cout<<dou_add(5.35,5.5)<<endl;  //挪用dou_add函數
 return 0;
}

應用結構函數
===============示例代碼1.2===============

#include<iostream>
using namespace std;
int n_add(int a,int b)                              //界說函數n_add用於int型數據相加
{
 int c;
 c=a+b;
 return c;
}
double n_add(double a,double b)    //界說函數n_add用於double型函數相加
{
 double c;
 c=a+b;
 return c;
}
int main()
{
 cout<<n_add(5,3)<<endl;             //挪用n_add函數
 cout<<n_add(5.35,5.5)<<endl;   //挪用n_add函數
 return 0;
}

應用函數模板
===============示例代碼1.3===================

#include<iostream>
using namespace std;
template<typename T>
T n_add(T a,T b)
{
 T c;
 c=a+b;
 return c;
}
int main()
{
 cout<<n_add(5,3)<<endl;
 cout<<n_add(5.35,5.5)<<endl;
 return 0;
}

剖析:起首剖析示例代碼1.1,該代碼依據分歧的的數據(int和double兩種)相加,分離界說了兩個分歧的函數int_add和dou_add,當分歧類型的數據相加時,我們人工的設定應用對應的函數停止操作。

示例代碼1.2比擬1.1而言,在函數的挪用情勢長進行了簡化,應用了函數的重載技巧,關於一切的數據,同一應用函數n_add停止操作,編譯體系會依據數據的類型主動挪用對應的函數。

示例代碼1.3比擬1.2而言,則有在函數體長進行了簡化,假如我們應用了函數模板,我們就沒有需要去逐個書寫對應的函數,我們只須要結構響應的模板,然後體系會主動斷定數據的類型,然後替換對應的虛擬類型,

好比,當操作n_add(5.35,5.5)時,體系會主動斷定數據為doubl型,然後就會將函數模板中的T調換成double:

也就相當於結構了函數:

int n_add(int a,int b)                            
{
 int c;
 c=a+b;
 return c;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved