将 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)
我想知道为什么默认参数会被认为是坏/差/值得警告?有人有任何代码示例证明这是一个可行的警告吗?
当涉及到函数参数的默认参数时,存在一些奇怪的极端情况。
\n\n这是 CppCon 2017 的演示,详细介绍了许多棘手的行为。 https://youtu.be/NeJ85q1qddQ
\n\n总结一下要点:
\n\n当然,对于非模板构造函数的情况,它们是相当无害的。它不能被覆盖或重新声明(尽管超出范围的定义可能会给您带来痛苦)。
\n| 归档时间: |
|
| 查看次数: |
1704 次 |
| 最近记录: |