#include<iostream>
using namespace std;
class Base
{
public:
Base()
{
m_a=100;
}
void show()
{
cout<<" Base 的show函数调用"<<endl;
}
void show(int a)
{
cout<<"Base 的show(int a)函数调用"<<endl;
}
int m_a;
};
class son:public Base
{
public:
son()
{
m_a=200;
}
void show()
{
cout<<"son 的show函数调用"<<endl;
}
int m_a;
};
//同名成员属性处理:
void show01()
{
son p;
cout<<"son 的 m_a="<<p.m_a<<endl;//直接调用是子类中同名成员函数
cout<<"Base 的 m_a="<<p.Base::m_a<<endl;//这种形式是调用父类中的成员函数
}
//同名成员函数处理:
void show02()
{
son p2;
p2.show();//直接调用是子类中同名成员函数
p2.Base::show();//这种形式是调用父类中的成员函数
//如果子类中出现和父类中同名的成员函数 子类中的同名成员函数归隐藏掉父类中的所有同名成员函数
//如果想要访问到父类中的同名成员函数,需要加作用域。
p2.Base::show(100);
}
int main()
{
show01();
show02();
return 0;
}
总结:
1:子类对象可以直接访问到子类中同名的成员
2:子类对象加作用域可以访问到父类中的同名成员
3:当子类与父类拥有同名成员函数,子类会隐藏掉父类中所有同名成员函数,加作用域可以访问到父类中的同名成员函数。