本文转载自:https://www.cnblogs.com/oddcat/p/11232415.html
原理阐述
-
如果类B是类A的子类,则在类B的成员方法中调用类A的方法时,可以直接以 A::method(paramlist); 来调用。
-
若子类B重写(overwrite)了父类A的同名方法,则类A的实例调用的是类A的方法,类B的实例调用的是类B的方法;将类B实例的指针指向类A的指针变量ptr,则通过ptr调用的是类A的方法;
-
若定义了类B的实例B1,则通过B1调用类A的方法的用法为: B1.A::method(paramlist);
-
若子类与父类方法同名,但是参数列表不一致,在子类中调用父类方法,由于重写规则,导致编译出错。此时可以使用using语句,使父类方法在子类中可见。
代码示例
#include <iostream>
using namespace std;
class base
{
public:
void func()
{
cout << "base-func" << endl;
}
};
class son : public base
{
public:
void func()
{
cout << "son func" << endl;
}
void test()
{
func(); // 调用自己的成员函数
A::func(); // 调用父类的成员函数
}
};
int main()
{
son a;
a.test();
system("pause");
return 0;
}