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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)