天天看點

C++ 預設參數 詳解

我們可以把預設參數看做“備胎”!!!!!!

所謂預設參數,顧名思義,就是在聲明函數的某個參數的時候為之指定一個預設值,在調用該函數的時候如果采用該預設值,你就無須指定該參數。預設參數使用主要規則:調用時你隻能從最後一個參數開始進行省略,換句話說,如果你要省略一個參數,你必須省略它後面所有的參數,即:帶預設值的參數必須放在參數表的最後面。 預設值必須是常量。顯然,這限制了預設參數的資料類型,例如動态數組和界面類型的預設參數值隻能是 nil;至于記錄類型,則根本不能用作預設參數。 預設參數必須通過值參或常參傳遞。聲明是帶有預設參數的函數,則預設值隻能寫在聲明當中。

預設參數可以分為全預設參數和半預設參數:

  • 全預設參數

全預設參數就是所有的參數都帶有預設值。

int Add(int a = 10, int b = 10, int c = 10){}
           

全預設參數通常這樣傳參:

#define _CRT_SECURE_NO_DEPRECATE 1
#include<iostream>
using namespace std;

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


int main()
{
	cout << Add() << endl;
	cout << Add(1) << endl;
	cout << Add(1, 2) << endl;
	cout << Add(1, 2, 3) << endl;
	return 0;
}
           
C++ 預設參數 詳解

顯而易見,如果傳參的時候隻傳了部分參數,那麼該值會被從左至右比對。

  • 半預設參數

​​​​​​​半預設參數就是部分參數帶有預設值。

int Add(int a, int b = 10, int c =10){}   //正确
int Add(int a, int b, int c =10){}        //正确
int Add(int a, int b = 10, int c){}       //錯誤
int Add(int a = 10, int b = 10, int c){}  //錯誤
           

注意:

  1. 帶預設值的參數必須放在參數清單的最後面。因為傳參是從右向左的。
  2. 預設參數不能同時在函數聲明和定義中出現,隻能二者留其一,最好放在聲明中。
  3. 預設值必須是常量或者全局變量。
  4. C語言并不支援預設。

繼續閱讀