将 ReSharper 与 C++17 结合使用,我启用了许多警告,只是为了看看我的项目警告了我什么。我明白了:
Declaring a parameter with a default argument is disallowed[fuchsia-default-arguments]
Run Code Online (Sandbox Code Playgroud)
有问题的代码是构造函数:
class Point2D
{
public:
explicit Point2D(double x = 0.0, double y = 0.0);
};
Run Code Online (Sandbox Code Playgroud)
我想知道为什么默认参数会被认为是坏/差/值得警告?有人有任何代码示例证明这是一个可行的警告吗?
即使使用默认构造函数仍然有错误.
class Foo {
public:
Foo ( int x, int y, int type );
}
Run Code Online (Sandbox Code Playgroud)
并在.cpp文件中
Foo::Foo ( int x = 0, int y = 0, int type = 0 ) {
Run Code Online (Sandbox Code Playgroud)
然而,当我打电话给它
Foo foo_array[5][5];
Run Code Online (Sandbox Code Playgroud)
我收到了错误.这可能是什么原因?