父子之间的冲突
父子之间变量的冲突
- 子类可以定义父类中的同名成员
- 子类中的成员将隐藏父类中的同名成员
- 父类中的同名成员依然存在于子类中
- 通过作用域分辨符(
::
)访问父类中的同名成员
#include <iostream>
using namespace std;
class Parent
{
public:
int i;
Parent()
{
cout<<"Parent() : "<<"&i = "<<&i<<endl;
}
};
class Child : public Parent
{
public:
int i;
Child()
{
cout<<"Child() : "<<"&i = "<<&i<<endl;
}
};
int main(int argc, char const *argv[])
{
Child c;
cout<<"&c.i = "<<&c.i<<endl;
cout<<"&c.Parent::i"<<&c.Parent::i<<endl;
return 0;
}
父子之间函数的冲突
- 子类中的函数将隐藏父类的同名函数
- 子类无法重载父类的成员函数
- 使用作用域分辨符访问父类中的同名函数
- 子类可以定义父类中完全相同的成员函数
小结
- 子类可以定义父类中的同名成员
- 子类中的成员将隐藏父类中的同名成员
- 子类和父类中的函数不能构成重载关系
- 子类可以定义父类中完全相同的成员函数
- 使用作用域分辨符访问父类中的同名成员