gpt4 book ai didi

c++ - 为什么对默认参数发出警告?

转载 作者:太空狗 更新时间:2023-10-29 21:11:11 24 4
gpt4 key购买 nike

将 ReSharper 与 C++17 结合使用,我启用了许多警告只是为了查看我的项目向我发出的警告。我明白了:

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);
};

我想知道为什么默认参数会被认为是坏的/差的/值得警告的?有没有人有任何代码示例证明这是一个可行的警告?

Here is the documentation.

最佳答案

当涉及到函数参数的默认参数时,有几个奇怪的极端情况。

这是 CppCon 2017 的演示文稿,详细介绍了许多棘手的行为。 https://youtu.be/NeJ85q1qddQ

总结要点:

  • 重新声明会导致潜在的混淆行为
  • 在虚函数调用中使用的默认参数不是由调用的函数决定的,而是由静态类型决定的。
  • 函数模板上的默认参数可能看起来格式错误,但只要它们未实例化就可以编译。

当然,对于非模板构造函数的情况,它们是相当无害的。它不能被覆盖或重新声明(尽管越界定义可能会给您带来痛苦)。

关于c++ - 为什么对默认参数发出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51291695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com