相关疑难解决方法(0)

我是否错误地使用默认参数?

我刚刚开始阅读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我似乎无法正常显示代码片段?系统有变化吗?

c++ function default-arguments

9
推荐指数
1
解决办法
972
查看次数

有没有办法避免在初始化字符串时从clang-tidy(紫红色默认参数)发出此警告?

考虑这段代码:

#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的实现确实可以。

编辑:更改代码以简化测试用例。

c++ clang-tidy

6
推荐指数
1
解决办法
1159
查看次数

标签 统计

c++ ×2

clang-tidy ×1

default-arguments ×1

function ×1