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 }
浙公网安备 33010602011771号