一.隐藏的规则
- 基类和派生类都有独立的作用域
- 基类和派生类有同名成员,派生类成员会覆盖基类成员,但是在派生类成员函数中,可以显示访问基类被覆盖的成员(基类::基类成员)
- 只要函数名相同就构成隐藏``
class Person
{
protected:
string _name = "张三"; // 姓名
string _address="济南"; // 地址
};
class Student : public Person
{
public:
void Print()
{
cout << _name<<' ' << _address;
}
protected:
string _name = "李四";
};
int main()
{
Student s;
s.Print();
return 0;
}
二.隐藏的面试题
class A
{
public:
void fun()
{
cout << "func()" << endl;
}
};
class B : public A
{
public:
void fun(int i)
{
cout << "func(int i)" << i << endl;
}
};
int main()
{
B b;
b.fun(10);
b.fun();
}
判断运行结果
A. 编译报错 B. 运⾏报错 C. 正常运⾏
答案 :编译报错,func函数缺少参数