父类
class Base
{
private:
int x;
public:
virtual void mf1() = 0;
virtual void mf2();
void mf3();
void mf3(int a );
};
子类
class Derived :public Base
{
public:
virtual void mf1();
void mf4();
void mf3();
};
main函数
int main()
{
Derived a ;
a.mf1();
a.mf4();
a.mf3(4);
a.mf3();
a.mf2();
}
运行到mf3(4)会报错,因为derived的mf3覆盖了父类总的所有mf3方法。
解决方式
class Derived :public Base
{
public:
using Base::mf3;
virtual void mf1();
void mf4();
void mf3();
};
using Base::mf3;
再次运行main函数,运行正常。
本文介绍了一个C++编程中关于方法重写与隐藏的问题案例。通过父类Base与子类Derived的设计,展示了如何正确地重写基类的成员函数以避免编译错误。特别是针对重载方法mf3的不同实现进行了详细解析,并提供了有效的解决方案。

2097

被折叠的 条评论
为什么被折叠?



