在C ++ 17中使用ReSharper,我启用了许多警告,只是为了查看我的项目警告我什么。我明白了:
Declaring a parameter with a default argument is disallowed[fuchsia-default-arguments]
有问题的代码是构造函数:
class Point2D
{
public:
explicit Point2D(double x = 0.0, double y = 0.0);
};
我想知道为什么默认参数会被认为是不良/不良/值得警告?有没有人提供任何代码示例来证明这是可行的警告?
答案 0 :(得分:3)
关于函数参数的默认参数,有几种奇怪的情况。
这是CppCon 2017的演示,详细介绍了许多棘手的行为。 https://youtu.be/NeJ85q1qddQ
总结要点:
当然,对于您使用非模板构造函数的情况,它们是相当无害的。不能覆盖或重新声明它(尽管过分定义可能会给您带来麻烦)。