原则:
- 当子类成员变量与父类成员变量同名时
- 子类依然从父类继承同名成员
- 在子类中通过作用域分辨符::进行同名成员区分(在派生类中使用基类的同名成员,显式地使用类名限定符)
- 同名成员存储在内存中的不同位置
#include <iostream>
using namespace std;
class Parent
{
public:
int a;
int b;
};
class Child : public Parent
{
public:
void setValue()
{
a = 10; // 使用的派生类自己的 a
}
public:
int a;
int c;
};
int main()
{
cout << "szieof Child : " << sizeof Child << endl;
Child c;
c.b = 1;
c.c = 2;
c.setValue();
// 当基类成员变量和派生类成员变量重名的时候,默认使用的是 派生类的变量
c.a = 9; //可在此处设置断点,逐步查看过程
// 使用基类的同名成员变量,要使用 域解析符指明所属的类
c.Parent::a = 8;
return 0;
}