继承同名成员处理方式
- 访问子类同名成员, 直接访问就可以
- 访问父类同名成员 需要加作用域
在C++中 如果子类成员与父类成员同名时,子类会隐藏父类的同名成员。
当子类与父类拥有同名的成员函数,子类会隐藏父类中所有版本的同名成员函数
如果想访问父类中被隐藏的同名成员函数,需要加父类的作用域
例如:
class Base
{
public:
Base()
{
m_A = 100;
cout << "构造一个Base类对象" << endl;
}
~Base()
{
cout << "析构一个Base类对象" << endl;
}
void func()
{
cout << "Base - func()调用" << endl;
}
int m_A;
};
class Son :public Base
{
public :
Son()
{
cout << "构造一个Son类对象" << endl;
m_A = 300;
}
void func()
{
cout << "Son - func()调用" << endl;
}
~Son()
{
cout << "析构一个Son类对象" << endl;
}
int m_A;
};
void test()
{
Son s1;
cout << s1.m_A;
cout << "-----------------------------------------_" << endl;
cout << s1.Base::m_A << endl;
cout << "-----------------------------------------_" << endl;
s1.func();
s1.Base::func();
}
int main()
{
test();
system("pause");
return 0;
}