重写 C 中的重载函数
考虑这样一种情况:派生类重写其基类中重载的函数。重写后,您可能会遇到错误,指示派生类中缺少重载函数。此行为不是设计缺陷,而是 C 继承机制的结果。
默认情况下,当类重写成员函数时,仅在派生类的范围内考虑重写的版本。因此,基类中函数的任何重载版本都不再可访问。
要解决此问题并保留重载功能,可以在派生类中使用 using 指令:
class bar : public foo {
using foo::a; // Bring overloads from 'foo' into 'bar'
};
using 指令明确指定 foo 类中的 a 重载应该在 bar 类中可用。这允许派生类访问和使用该函数的所有重载版本。
需要注意的是,如果基类和派生类中都存在相同的重载,则使用 using 指令可能会引入歧义。此外,如果现有代码依赖于基类重载的特定行为,则引入新的重载可能会改变其预期功能。因此,建议使用此技术时务必小心。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3