C++Note 继承的对象模型 构造和析构 同名成员处理方式

继承中的对象模型 

从父类继承过来的成员,那些属于子类的对象中?//继承后 父类的私有成员只是被隐藏了,但是还是会继承下去 

使用工具 Developer Command Prompt for...

跳转盘符 进入所属文件路径    D:(进入D盘)

cd 路径 进入cpp文件路径

键入 :dir 列出文件中所有文件

键入:cl /d1 reportSingleClassLayoutSon Test20230602.cpp       (reportSingleClassLayout + 类 报告单个类布局)(Test 按下”Tab“键 快速填充内容)

 弹出:

继承中构造和析构顺序

  

先构造父类 后构造子类 析构与构造顺序相反

继承中同名成员处理方式

 当子类与父类出现同名的成员时,如何通过子类对象,访问到子类或者父类中同名的数据?

  访问子类同名成员   直接访问即可

  访问父类同名成员   需要加作用域 

复制代码
 1 #include <iostream>
 2 using namespace std;
 3 //继承中同名成员处理   加作用域
 4 class Base
 5 {
 6 public:
 7     Base()
 8     {
 9         m_A = 100;
10     }
11     void func()
12     {
13         cout << "Base的func" << endl;
14     }
15     int m_A;
16 };
17 class Son :public Base
18 {
19 public:
20     Son()
21     {
22         m_A = 200;
23     }
24     void func()
25     {
26         cout << "Son的func" << endl;
27     }
28     int m_A;
29 };
30 void test()
31 {
32     Son s;
33     //如果子类中出现和父类同名的成员函数,子类的同名成员会隐藏掉父类所有同名成员函数
34     //出现同名之后 想访问到父类中被隐藏的同名成员函数,需要加作用域
35     cout << "m_A = " <<s.m_A<< endl;
36     cout << "Base m_A = " << s.Base::m_A << endl;
37     cout << "------------------" << endl;
38     s.func();
39     s.Base::func();
40 }
41 
42 int main()
43 {
44     test();
45     system("pause");
46     return 0;
47 }
复制代码

posted on   廿陆  阅读(5)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示