1、什么是覆盖?
派生类可以定义一个和基类成员同名的成员,这叫覆盖。在派生类中访问这类成员时,缺省的情况是访问派生类中定义的成员。要在派生类中访问由基类定义的同名成员时,要使用作用域符号::。
注意:一般来说,基类和派生类不定义同名成员变量。
2、举栗子
class base {
int j;
public:
int i;
void func();
};
class derived :public base{
public:
int i;
void access();
void func();
};
void derived::access() {
j = 5; //error
i = 5; //引用的是派生类的 i
base::i = 5; //引用的是基类的 i
func(); //派生类的
base::func(); //基类的
}
int mian(){
derived obj;
obj.i = 1;
obj.base::i = 1;
}