預設的引數是乙個函式的引數有乙個提供給它的預設值。如果使用者不提供此引數的值,將使用預設值。如果使用者提供的預設引數值,使用使用者提供的價值。
考慮下面的程式:
1
2
3
4
5
6
7
8
9
10
11
12
void
printvalues(
int
nvalue1,
int
nvalue2=10)
int
main()
該程式產生的輸出如下:
第一值:1
第二值:10
第一值:3
第二值:4
在第乙個函式呼叫,呼叫者不**nvalue2爭吵,所以函式使用預設值10。在第二次呼叫,呼叫者並**nvalue2值,所以使用者提供的值進行。
預設的引數是乙個很好的選擇,當函式需要乙個值,使用者可能會或可能不會想重寫。例如,這裡有幾個函式原型的預設引數可能是常用的:
1
2
3
void
openlogfile(
char
*strfilename=
"default.log"
);
int
rolldie(
int
nsides=6);
void
printstring(
char
*strvalue, color ecolor=color_black);
// color is an enum
乙個函式
可以有多個
預設引數:1
2
3
4
5
void
printvalues(
int
nvalue1=10,
int
nvalue2=20,
int
nvalue3=30)
給定下面的
函式呼叫:1
2
3
4
printvalues(1, 2, 3);
printvalues(1, 2);
printvalues(1);
printvalues();
將產生以下輸出:
價值觀:1 2 3
價值觀:1 2 30
價值觀:1 20 30
價值觀:10 20 30
請注意,這是不可能也沒有提供nvalue1和nvalue2提供的價值為nvalue3使用者定義的值。這是因為c++不支援函式呼叫如printvalues(,,3)。這有兩個主要的後果:
1)所有預設的引數必須是最右邊的引數。
以下是不允許的:1
void
printvalue(
int
nvalue1=10,
int
nvalue2);
// not allowed
2)最左邊的預設引數應該是乙個最有可能被使用者更改。
預設引數和函式過載
帶預設引數的函式可以被過載。例如,下面的是允許的:
提供給外部呼叫的介面設計原則
1 介面入參 出參和介面名應擁有統一的命名規範,要做到見名知意。2 不要做大而全的介面,要盡量保持介面的功能單一 好處 這樣有利於介面除錯 改造公升級和維護 3 介面出參應含有介面呼叫結果資訊 code 和 message 字段 4 介面出參應對同型別 單條,多條,分頁 的資料有固定相同的格式 好處...
方法引數 預設值 Python引數的預設值陷阱!
今日分享 引數的預設值陷阱 下面定義的函式f,其引數d是乙個預設引數,且為字典型別 def f a,d print f a print f d do some process return d 最後返回字典d,下面呼叫函式f ret dict f 1 第二個引數d使用預設值 ret dict b 2...
lua 函式 預設值 定義函式引數的預設值
如果你想要命名引數和預設值,如php或python,你可以使用表構造函式呼叫你的函式 myfunction 函式本身可以有這樣的簽名 function myfunction t setmetatable t,local a,c t 1 or t.a,t 2 or t.b,t 3 or t.c fun...