c++继承中同名成员处理

Posted mch5201314

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++继承中同名成员处理相关的知识,希望对你有一定的参考价值。

所谓同名成员也就是 子类与父类 变量或者成员函数重名

看看以下代码,了解访问方式

 1 #include<bits/stdc++.h>
 2 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 father
24 
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输出是200
37 
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.子类中的同名函数会隐藏父类的同名函数,调用时要加作用域

以上是关于c++继承中同名成员处理的主要内容,如果未能解决你的问题,请参考以下文章

C++ 继承同名静态成员处理方式

c++继承--这就是c++里面最有魅力的东西

C++继承

C++继承

C++继承

C ++继承类具有同名成员