#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:当子类与父类拥有同名成员函数,子类会隐藏掉父类中所有同名成员函数,加作用域可以访问到父类中的同名成员函数。
