所谓同名成员也就是 子类与父类 变量或者成员函数重名
看看以下代码,了解访问方式
1 #include2 using namespace std; 3 4 class father 5 { 6 public: 7 int a = 100; 8 void fun() 9 {10 cout << "father fun " << endl;11 }12 void fun(int x)13 {14 a = x;15 cout << a << endl;16 }17 protected:18 int b;19 private:20 int c;21 };22 23 class son1:public father24 {25 public:26 void fun()27 {28 cout << "son1 fun " << endl;29 }30 int a = 200;//同名变量31 };32 33 void test01()34 {35 son1 s1;36 cout << s1.a << endl;//这是子类的a输出是20037 38 cout << s1.father::a << endl;//这是父类的a输出100,访问是需要作用域39 }40 41 //接下来看看同名成员函数42 void test02()43 {44 son1 s1;45 //和上面一样的46 s1.fun();47 s1.father::fun();48 //s1.fun(110);是不允许的非法的因为子类的同名函数会隐藏父类的同名函数49 s1.father::fun(110);50 }51 int main()52 {53 //test01();54 test02();55 return 0;56 }
我们可以得出结论
1.子类可以直接访问子类中的同名成员
2.子类可以通过添加作用域来访问父类中的同名成员
3.子类中的同名函数会隐藏父类的同名函数,调用时要加作用域