– 作者 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