C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C中部分类函数覆盖的问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
是否存在部分覆盖基类定义的一组虚函数的问题?

我的编译器提供以下警告:

overloaded virtual function "MyBaseClass::SETVALue" is only partially overridden in class "MyDerivedClass".

这些类看起来像这样

class MyBaseClass
{
public:
    virtual void SETVALue(int);
    virtual void SETVALue(SpecialType*);
}

class MyDerivedClass : public MyBaseClass
{
public:
    virtual void SETVALue(int);
}

摆脱此警告的简单方法是为基本函数使用不同的名称,但我想知道是否有任何令人信服的理由来修复此特定警告.我不相信这违反了C标准.我的猜测是警告程序员他们可能忘记为所有可能的输入类型实现行为.在我们的例子中,有意排除某些特定类型.

你会劝阻完全压制这个警告吗?

解决方法

SETVALue(int)的覆盖隐藏了基类的SETVALue(SpecialType *)(参见 C++ FAQ Lite),因此如果您尝试调用SETVALue(new SpecialType()),您将收到错误.

您可以通过向派生类添加using指令来避免这种情况,该派生类从基类“导入”重载:

class MyDerivedClass : public MyBaseClass
{
public:
    using MyBaseClass::SETVALue;
    virtual void SETVALue(int);
};

大佬总结

以上是大佬教程为你收集整理的C中部分类函数覆盖的问题全部内容,希望文章能够帮你解决C中部分类函数覆盖的问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。