第15章 面向对象编程(11)
15.5 继承情况下的类作用域
在继承情况下,派生类的作用域嵌套在基类作用域中。如果不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义。
15.5.1 名字查找在编译时发生
对象、引用或指针的静态类型决定了对象能够完成的行为。甚至当静态类型和动态类型可能不同的时候,就像使用基类类型的引用或指针时可能会发生的,静态类型仍然决定着可以使用什么成员。
15.5.2 名字冲突与继承
与基类成员同名的派生类成员将屏蔽对基类成员的基本访问。
class Base
{
protected:
int value1;
public:
Base(int val1):value1(0){}
};
class Child:public Base
{
private:
int value1;
public:
Child(int val1):value1(val1),Base(val1){}
int GetValue1()
{
return value1;
}
};
Child c(11);
cout<<c.GetValue1()<<endl; //11
使用作用域操作符访问被屏蔽成员
可以使用作用域操作符访问被屏蔽的基类成员。
int GetValue1()
{
return Base::value1;
}
设计派生类时,只要可能,最好避免与基类成员的名字冲突。
摘自 xufei96的专栏
补充:软件开发 , C++ ,