重载是否对派生类起作用?
如果派生类有基类的同名方法,这是否能构成重载?
例如:
class A { public: void func(float value) { cout << "A::func:" << value << endl; } }; class B : public A { public: void func(int value) { cout << "B::func:" << value << endl; } }; int main() { B b; b.func(1.2f); system("pause"); return 0; }
由于调用func传入的是'1.2f',属于浮点数,是不是应该会调用A::func才对呢?
可以看到,执行的却是B::func,也就是说重载对派生类是没有作用的。如果非要这样重载应该怎么写呢?
派生类如何实现重载基类方法?
只需要在派生类using需要重载的基类方法即可,结果如下:
问题解决~