当前位置:编程学习 > C/C++ >>

第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++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,