gpt4 book ai didi

c++ - 通常方法上的 Woverloaded-virtual 警告

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:42:17 31 4
gpt4 key购买 nike

我很困惑为什么下面的代码会产生 Woverloaded-virtual 警告。

class TestVirtual
{
public:
TestVirtual();
virtual void TestMethod(int i);
};

class DerivedTestVirtual : public TestVirtual
{
public:
void TestMethod();

};

派生类具有不带参数的常用方法 TestMethod - 签名不同于基类的类似虚拟方法。那为什么编译器不能解决这种情况呢?

最佳答案

警告的原因是无参数版本从基类中隐藏了 int 版本。

DerivedTestVirtual tdv;
tdv.TestMethod(0); // This line will cause an error.

你可以通过声明你使用来自基础的所有原始重载来规避这种情况,如下所示:

class DerivedTestVirtual : public TestVirtual
{
public:
using TestVirtual::TestMethod;
void TestMethod();
};

警告是为了提请您注意该问题。而且它也很有用,因为当您尝试覆盖它时可能会发生这样的错误,但不小心导致重载。尽管现在您会使用 override 说明符来捕获它。

关于c++ - 通常方法上的 Woverloaded-virtual 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46060018/

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