47记-C++继承引起的父子之间的冲突
思考2个问题
-
子类中是否可以定义父类中的
同名成员
和同名函数
?如果可以,如何区分?如果不可以,为什么? -
子类中定义的函数是否能
重载
父类中的同名函数?
带着这两个问题来做下试验,试试就知道了,电脑又不会爆炸
。
同名成员变量的测试
#include <iostream>
#include <string>
using namespace std;
class Parent
{
public:
int mi;
};
class Child : public Parent
{
public:
int mi;
};
int main()
{
Child c;
c.mi = 100; // mi 究竟是子类自定义的,还是从父类继承得到的?
//回答:此时调用的是Child类的成员变量mi,
//为什么呢?
//因为如果父类的已经成员变量mi而还在子类再定义一个和父类同名的成员变量mi
//那么说明子类需要一个新的成员变量来覆盖隐藏父类的成员变量
c.Parent::mi = 1000;
//那么如果要对父类的成员变量进行操作,则使用作用域分辨符(::)来访问父类就可以了
return 0