1. 子类拥有了父类的public财产(私有成员其实也有,但是访问不了),通过子类调用函数时,编译器先在子类中找相应的函数,找不到的话再去父类找。
如此一来,如果父类和子类定义了一样的函数(包括参数列表),子类的函数会覆盖父类函数。
如果,父类定义了子类的同名函数,但是参数列表不同,子类的也会被覆盖隐藏,如
果想通过子类调用父类的函数,需要显示的说明,比如 b.A::XXXX(p1, p2)
#include <iostream>
using namespace std;
class A
{
public:
A() {}
~A() {}
void print() { cout << "This is A\n"; }
};
class B: public A
{
public:
B() {}
~B() {}
void print() { cout << "This is B\n"; }
};
int main()
{
A a;
B b;
A *pa = &a;
B *pb = &b;
pa->print();
pb->print();
getchar();
r