C++深度剖析教程5 --- 函數參數的擴展

– 作者 Allen 轉載請註明出處
微信公衆號「炫色Allen」(微信號:Allen5G)

函數參數的默認值
c++可以在函數聲明時爲參數提供一個默認值
當函數調用時沒有提供參數的值,則使用默認值

在這裏插入圖片描述
提個小問題問題:當函數聲明和定義中的參數默認值不同時會發生什麼?
在這裏插入圖片描述
5-1

#include <stdio.h>

int mul(int x = 0);

int main(int argc, char *argv[])
{
    printf("%d\n", mul());  //默認值爲0,C語言會編譯錯誤,c++對C語言的擴展
    printf("%d\n", mul(-1));
    printf("%d\n", mul(2));
    
    return 0;
}

int mul(int x)  //這裏不能賦值,c++是強類型語言,對參數,默認值的檢查很嚴格
{
    return x * x;
}

在這裏插入圖片描述
函數參數的規則
設計從右向左,調用時從左向右

在這裏插入圖片描述
5-2 默認參數的錯誤示例

#include <stdio.h>

int add(int x, int y = 0, int z = 0);

int main(int argc, char *argv[])
{
    printf("%d\n", add(1));
    printf("%d\n", add(1, 2));
    printf("%d\n", add(1, 2, 3));
    
    return 0;
}

int add(int x, int y, int z)
{
    return x + y + z;
}

在這裏插入圖片描述
函數佔位參數
目的就是下邊的使用

在這裏插入圖片描述
目的是兼容C語言的
右邊的纔是不接受參數,左邊是佔位,是可以接受的
C語言是不等價的,c++是等價的

在這裏插入圖片描述
5-3 佔位參數和默認參數值結合起來
避免bug的方法

#include <stdio.h>

int func(int x, int = 0);

int main(int argc, char *argv[])
{
    printf("%d\n", func(1));
    printf("%d\n", func(2, 3));
    
    return 0;
}

int func(int x, int)
{
    return x;
}

在這裏插入圖片描述

總結

在這裏插入圖片描述

本文參考狄泰軟件學院相關課程,可以加狄泰軟件學院羣學習
Q羣號碼:199546072

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章