函数声明顺序很重要,特别是如果函数声明有默认参数。
例如,在下面的函数声明中,如果您更改声明顺序,那么编译会给您 - 缺少默认参数错误。原因是编译器允许您将函数声明与默认参数分隔在同一范围内,但它应该按照从RIGHT 到 LEFT(默认参数)和从TOP 到 BOTTOM(函数声明默认参数的顺序)的顺序。
//declaration
void function(char const *msg, bool three, bool two, bool one = false);
//void function(char const *msg, bool three = true, bool two, bool one); //Error
void function(char const *msg, bool three, bool two = true, bool one); // OK
void function(char const *msg, bool three = true, bool two, bool one); // OK
int main() {
function("Using only one Default Argument", false, true);
function("Using Two Default Arguments", false);
function("Using Three Default Arguments");
return 0;
}
//definition
void function(char const *msg, bool three, bool two, bool one ) {
std::cout<<msg<<" "<<three<<" "<<two<<" "<<one<<std::endl;
}