C++中基类(父类)和派生类(子类)数据成员变量重复定义的情况
本片帮助自己梳理这些情况,以供日后查看,朋友们仅供参考。
- protected派生类中定义重名数据成员
定义的数据成员赋值就会给派生类,未定义的数据成员赋值就会给基类
#include <iostream>
using namespace std;
// 定义了一个父类
class Parent
{
protected:
int i;
int j;
};
//继承
class Child : public Parent
{
protected:
int i;
void f()
{
cout << "Parent::i = " << Parent::i << endl;
cout << "Parent::j = " << Parent::j << endl;
cout << "Child::i = " <<i << endl;
cout << "Child::j = " << j << endl;
}
public:
Child(int a, int b)
{
i = a;
j = b;
f();
}
};
int main()
{
Child c1(1, 3);
system("pause");
return 0;
}
输出结果:
Parent::i = -858993460
Parent::j = 3
Child::i = 1
Child::j = 3
当然可以通过直接指定的方法,排除重名干扰
Parent::i = i; // 把父类中的 i 赋值为参数 i
Child::i = j; // 把子类中的 i 赋值为参数 i