【发布时间】:2011-03-14 04:47:08
【问题描述】:
int foo (int a , int b = 0)
我刚刚阅读了这段代码。我不明白“= 0”是什么意思?
我也想知道为什么int foo (int a = 0, int b) 无法编译。
【问题讨论】:
标签: c++
int foo (int a , int b = 0)
我刚刚阅读了这段代码。我不明白“= 0”是什么意思?
我也想知道为什么int foo (int a = 0, int b) 无法编译。
【问题讨论】:
标签: c++
b是一个参数,默认值为0。所以可以调用函数(例如):
foo(3, 4)
a 和 b 等于 3 和 4
或:
foo(5)
a 和 b 等于 5 和 0。
int foo (int a=0, int b)
是错误的,因为默认参数只能出现在末尾。想象一下你有:
int foo (int a = 0, int b, int c = 1)
并称它为:
foo(3, 4)
编译器不会知道您省略了哪个。为避免这种情况,您不能将默认参数放在非默认参数之前。
【讨论】:
【讨论】:
它将参数“b”的默认值设置为函数foo,因此调用foo(345)等价于调用foo(345, 0)
【讨论】: