问题:当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢?
1.访问子类同名成员 直接访问即可
2.访问父类同名成员 需要加作用域
一、同名成员属性处理方式
代码如下:
#include <iostream>
using namespace std;class Base {public:Base() {m_A = 100;}int m_A;
};class Son : public Base {public:Son() {m_A = 200;}int m_A;
};void test01() {Son s;cout << "Son 下 m_A = " << s.m_A << endl;//如果通过子类对象 访问到父类中的同名成员 需要加作用域cout << "Base 下 m_A = " << s.Base::m_A << endl;}int main() {test01();return 0;
}
二、同名成员函数处理方式
代码如下:
#include <iostream>
using namespace std;class Base {public:Base() {m_A = 100;}void func() {cout << "Base fun()调用" << endl;}void func(int a) {cout << "Base fun(int a)调用" << endl;}int m_A;
};class Son : public Base {public:Son() {m_A = 200;}void func() {cout << "Son fun()调用" << endl;}int m_A;
};void test01() {Son s;s.func();//直接调用 调用是子类中的同名成员//如何调用父类中同名成员函数?s.Base::func();s.Base::func(100);}int main() {test01();return 0;
}
注意:
1.如果子类中出现和父类同名的成员函数,子类的同名成员会隐藏掉父类中所有同名成员
2.如果需要访问到父类中被隐藏的同名成员函数,需要加作用域