1、函數參數默認值
函數參數賦默認值時要從后往前賦值,不能后面的沒有賦默認值而后面的賦了默認值,可以前面的沒賦默認值,后面的賦默認值。
#include<stdlib.h> #include<iostream> using namespace std; void fun(int i = 30,int j = 20,int k = 10); int main(void) { fun(); fun(100); fun(100,200); fun(100,200,300); system("pause"); return 0; } void fun(int i,int j,int k) // 此處可以不用寫默認值,寫上默認值有的編譯器可能會報錯。 { cout << i << "," << j<< "," << k<< endl; }
運行結果:
2、函數重載
默認是在同一個命名空間下的
編譯器選擇與參數適合的函數進行編譯
#include<stdlib.h> #include<iostream> using namespace std; void fun(int i = 30,int j = 20,int k = 10); void fun(double i,double j); int main(void) { fun(1.11,2.22); fun(100,200); system("pause"); return 0; } void fun(int i,int j,int k) // 此處可以不用寫默認值,寫上默認值有的編譯器可能會報錯。 { cout << i << "," << j<< "," << k<< endl; } void fun(double i,double j) { cout << i << "," << j << endl; }
運行結果:
3、內聯函數
內聯函數是C++的增強特性之一,用來降低程序的運行時間。當內聯函數收到編譯器的指示時,即可發生內聯:編譯器將使用函數的定義體來替代函數調用語句,這種替代行為發生在編譯階段而非程序運行階段。
值得注意的是,內聯函數僅僅是對編譯器的內聯建議,編譯器是否覺得采取你的建議取決於函數是否符合內聯的有利條件。如何函數體非常大,那么編譯器將忽略函數的內聯聲明,而將內聯函數作為普通函數處理。
#include<stdlib.h> #include<iostream> using namespace std; inline void fun(int i = 30,int j = 20,int k = 10); inline void fun(double i,double j); int main(void) { fun(1.11,2.22); fun(100,200); system("pause"); return 0; } void fun(int i,int j,int k) // 此處可以不用寫默認值,寫上默認值有的編譯器可能會報錯。 { cout << i << "," << j<< "," << k<< endl; } void fun(double i,double j) { cout << i << "," << j << endl; }
練習:
使用函數的重載完成返回最大值的方法。
現在有一個數組,定義一個方法getMax(),利用函數的重載,分別實現:
1、隨意取出數組中的兩個元素,傳到方法getMax()中,可以返回較大的一個元素。
2、將整個數組傳到方法getMax()中,可以返回數組中最大的一個元素。
#include <iostream> using namespace std; /** *函數功能:返回a和b的最大值 *a和b是兩個整數 */ int getMax(int a, int b) { return a > b ? a : b; } /** * 函數功能:返回數組中的最大值 * arr:整型數組 * count:數組長度 * 該函數是對上面函數的重載 */ int getMax(int *arr,int count) { //定義一個變量並獲取數組的第一個元素 int maxNum = arr[0]; for(int i = 1; i < count; i++) { //比較變量與下一個元素的大小 if(maxNum < arr[i]) { //如果數組中的元素比maxNum大,則獲取數組中的值 maxNum = arr[i]; } } return maxNum; } int main(void) { //定義int數組並初始化 int numArr[3] = {3, 8, 6}; //自動調用int getMax(int a, int b) cout << getMax(numArr, 3) << endl; //自動調用返回數組中最大值的函數返回數組中的最大值 cout << getMax(numArr[0],numArr[2]) << endl; return 0; }