我刚刚开始阅读C++的初学者书.我有一些java经验(但是说过,我从来没有在java中使用默认参数,说实话)
所以,如上所述,我的问题是默认参数..
这是我正在使用的代码片段:
#include <iostream>
using namespace std;
//add declaration
int add(int a, int b);
int main (void)
{
int number1;
cout << "Enter the first value to be summed: ";
cin >> number1;
cout << "\nThe sum is: " << add(number1) << endl;
}
int add(int a=10, int b=5)
{
return a+b;
}
Run Code Online (Sandbox Code Playgroud)
我从g ++编译器得到的响应是:"函数'int add(int,int)'的参数太少了
我做错了吗?(我也用文字参数尝试过)
PS我似乎无法正常显示代码片段?系统有变化吗?
考虑这段代码:
#include <iostream>
int main () {
std::string str = "not default";
std::cout << str << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
运行clang-tidy -checks=* string.cpp给出以下内容:
7800 warnings generated.
/tmp/clang_tidy_bug/string.cpp:4:21: warning: calling a function that uses a default argument is disallowed [fuchsia-default-arguments]
std::string str = "not default";
^
/../lib64/gcc/x86_64-pc-linux-gnu/8.1.1/../../../../include/c++/8.1.1/bits/basic_string.h:509:39: note: default parameter was declared here
basic_string(const _CharT* __s, const _Alloc& __a = _Alloc())
^
Suppressed 7799 warnings (7799 in non-user code).
Run Code Online (Sandbox Code Playgroud)
还有其他可以通过的论点可以使此警告消失吗?我在这里实际上没有使用任何参数默认值。但是std :: string的实现确实可以。
编辑:更改代码以简化测试用例。