04-預設引數

東閣堂主發表於2019-02-06

寫在前面

聽說過函式有預設值嗎,想了一下,腦袋一團漿糊,好,今天來認識一下
複製程式碼

名詞解釋

 C++允許函式設定預設引數,在呼叫時可以根據情況省略實參。規則如下:
 預設引數只能按照右到左的順序
 如果函式同時有宣告、實現,預設引數只能放在函式宣告中
 預設引數的值可以是常量、全域性符號(全域性變數、函式名)
複製程式碼

碼上封口

將main.m 改為mian.mm 檔案
#include <iostream>
using namespace std;

void display(int a = 10, int b = 20) {
    cout << "a is " << a << endl;
    cout << "b is " << b << endl;
}

int main() {
    display();
    display(1);
    display(1,3);
}

看下列印結果:
a is 10
b is 20
a is 1
b is 20
a is 1
b is 3
是不是很厲害的樣子,嗯嗯,當時我也是這麼想的。
複製程式碼

注意點

在檔案裡是不是可以過載一下函式,定義兩個函式
void display(int a = 10) {
    cout << "a is " << a << endl;
}
void display() {
    cout << "display() " << endl;
}
此時會發現
display();
display(1);
這兩個函式呼叫會報錯"Call to 'display' is ambiguous",
這就是函式二義性,導致編譯器不知道呼叫哪一個,建議優先選擇使用預設引數。
可對比下第二講的函式過載部分。
複製程式碼

完整程式碼demo,請移步GitHub:DDGLearningCpp

當然C++大神就繞吧,非喜勿噴,畢竟這是個人的學習筆記?

相關文章