int foo (int a , int b = 0)
Run Code Online (Sandbox Code Playgroud)
我刚读了这段代码.我不明白"= 0"是什么意思?
我也想知道为什么int foo (int a = 0, int b)不编译.
Mat*_*hen 11
b是一个默认值为0的参数.因此可以调用该函数(例如):
foo(3, 4)
Run Code Online (Sandbox Code Playgroud)
a和b等于3和4
要么:
foo(5)
Run Code Online (Sandbox Code Playgroud)
a和b等于5和0.
int foo (int a=0, int b)
Run Code Online (Sandbox Code Playgroud)
是错误的,因为默认参数只能出现在最后.想象一下你有:
int foo (int a = 0, int b, int c = 1)
Run Code Online (Sandbox Code Playgroud)
并称之为:
foo(3, 4)
Run Code Online (Sandbox Code Playgroud)
编译器不知道你在省略哪个.要避免这种情况,您不能在非默认参数之前放置默认参数.