这里的"= 0"是什么意思?

use*_*213 1 c++

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)

编译器不知道你在省略哪个.要避免这种情况,您不能在非默认参数之前放置默认参数.