一、子类与父类的同名成员变量问题
1、子类的成员变量与父类的成员变量是否可以同名?
下面我们通过一个实例来说明。
#include<iostream>
#include<string>
using namespace std;
class Parent
{
public:
int mi;
};
class Child :public Parent
{
public:
int mi;
};
int main()
{
Child c1;
c1.mi=100;//mi到底是子类自己定义的mi还是从父类那里继承而来的呢?
return 0;
}
分析:这个例程是可以通过编译的,也就是说是可以在子类中定义和父类一样的同名成员,但是mi到底是子类自己定义的mi还是从父类那里继承而来的呢?我们如何区分?
2、如何区分?
我们通过对上面一个例子进行改进,就可以明白其中的缘由了。
#include<iostream>
#include<string>
using namespace std;
class Parent
{
public:
int mi;
Parent()
{
cout<<"Parent():"<<"&mi="<<&mi<<endl;//输出父类成员变量mi的地址
}
};
class Child :public Parent
{
public:
int mi;
Child()
{
cout<<"Child():"<<"&mi="<<&mi<<endl;//输出子类成员变量mi的地址
}
};
int main()
{
Child c1;
c1.mi=100;
c1.Parent::mi=1000;
cout<<endl;
cout<<"c1.Parent::mi="<<c1.Parent::mi<<endl;//输出父类的mi值
cout<<"&c1.Parent::mi="<<&c1.Parent::mi<<en