继承同名成员的处理方式

问题:当子类和父类有同名成员,该如何通过子类对象,访问子类或父类的数据?

解:

访问子类,直接访问;

访问父类,加作用域.

#include
using namespace std;
class Base
{
public:
	Base() {
		m_A = 100;
	}
	int m_A;
	void func() {
		cout << "Base-func" << endl;
	}
	void func(int a) {
		cout << "Base-func-有参" << endl;
	}

};
class son :public Base 
{
public:
	int m_A;
	son() {
		m_A = 200;
	}
	void func() {
		cout << "son-func()" << endl;
	}
};
void test01() {//同名成员变量的处理方式
	son s;

	cout << s.m_A << endl;//输出200
	cout << s.Base::m_A << endl;//输出100--通过子类成员访问父类同名对象需要加作用域
}

void test02() {//同名函数的处理方式
	son s;
	s.func();//of course,直接调用选子类
	s.Base::func();//其实你已经想到了 
	/*本行报错s.func(100);*/
	//如果子类中出现和父类同名的成员函数,子类的同名成员会隐藏掉父类中所有的同名成员函数
	s.Base::func(100);
	s.Base::func();
}
int main()
{
	/*test01();*/
	test02();
}

你可能感兴趣的:(开发语言,c++)