重写基类函数和重载
在 C 中,当派生类重写其基类的函数时,会出现一个常见问题:该函数的所有重载版本都会隐藏在派生类中。
派生类中的重载解析
通常,当调用重载函数时,编译器会搜索该函数当前类及其所有基类中的签名来解析适当的函数。但是,在提供的代码中,重写“bar”类中的“a”函数后,只有重写的版本保持可见。
防止重载歧义
到公开派生类中基类函数的所有重载,使用“using”声明。这显式地将“foo”类中“a”函数的所有重载引入“bar”的范围。
示例:
<code class="cpp">class bar : public foo { public: using foo::a; void a(int); };</code>
使用此修改后,编译器现在可以解析“bar”类中的“a(int)”和“a(double)”函数,确保保留原始重载功能。
注意:
请注意,向基类添加重载可能会改变使用该基类的现有代码的行为。考虑可能的影响并确保不会出现歧义或冲突至关重要。
以上是重写基类函数时如何保留派生类中的重载?的详细内容。更多信息请关注PHP中文网其他相关文章!