c++中的默认参数
default parameters in c++
考虑以下内容:
int foo(int x , int z = 0);
int foo(int x, int y , int z = 0);
如果我这样调用这个函数:
foo( 1 , 2);
编译器如何知道要使用哪一个?
它不会,因此这个例子不会干净地编译,它会给你一个编译错误
它会给您一个不明确的函数调用错误。
在线样本:
int foo(int x , int z = 0){return 0;}
int foo(int x, int y , int z = 0){return 10;}
int main()
{
foo( 1 , 2);
return 0;
}
输出:
prog.cpp:在函数"int main()"中:
prog.cpp:6:错误:重载"foo(int,int)"的调用不明确
prog.cpp:1:注意:候选为:int foo(int,int)
prog.cpp:2:注意:int foo(int,int,int)
没有,这就是为什么会出现编译器错误。
这是个不错的问题。但是它不会编译,因为对foo()
的调用异常。您可以通过在函数签名中使用不同的数据类型来消除这种歧义。
有关默认参数和函数重载的更多详细信息,请参阅http://www.smart2help.com/e-books/ticpp-2nd-ed-vol-one/Chapter07.html
编译器将报告不明确的函数重载。由于您无法确定将调用哪个函数,因此编译器
相关文章:
- 使函数参数默认为周围范围
- 如何将值传递给其参数(默认参数)
- 当“std::make_index_sequence”和“std::index_sequence”用于模板参数默认类型时
- C ,构造器中允许的参考参数默认值
- 哪些规则控制参数默认赋值?
- 错误:上一个规范后给出的参数默认参数
- 是否可以设计一个包含模板参数默认值的类
- 构造函数中参数C++默认值
- 如何设置依赖于其他参数的参数默认值
- C++模板参数默认函数实现
- QInput对话框参数默认值
- g++4.8.2上列表方法参数默认初始化时出错
- 在函数定义中指定参数默认值会导致错误 C2143:语法错误:'='之前缺少')'
- 函数模板:将第一个模板参数默认为第二个
- 模板模板参数默认可以引用其他模板类型的参数
- 参数默认为先例参数的值
- 如何修改一个类,使它只有一个成员函数,所有参数默认
- 内置类型的模板参数默认值
- 是否可以使用构造函数或对象作为其他类方法的参数默认值?
- 模板参数默认为更高版本