本文共 1048 字,大约阅读时间需要 3 分钟。
问题:当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢?
1.访问子类同名成员 直接访问即可
2.访问父类同名成员 需要加作用域 一、同名成员属性处理方式 代码如下:#includeusing 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;}
二、同名成员函数处理方式
代码如下:#includeusing 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.如果需要访问到父类中被隐藏的同名成员函数,需要加作用域转载地址:http://jeqdz.baihongyu.com/