MST

星途 面试题库

面试题:C++访问控制之继承中的访问权限

在C++中,假设有一个基类Base,包含公有成员public_member、保护成员protected_member和私有成员private_member。现有一个派生类Derived以public方式继承Base。请详细说明在Derived类内部以及通过Derived类对象,分别能访问Base类的哪些成员,并解释原因。
15.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 在Derived类内部
    • 可以访问public_member:因为基类Base的public成员在派生类Derived中保持public属性,在派生类内部可以直接访问。
    • 可以访问protected_member:基类Base的protected成员在派生类Derived中保持protected属性,在派生类内部可以直接访问。
    • 不能访问private_member:基类Base的private成员即使在public继承的情况下,在派生类内部也无法访问。private成员具有最高的访问权限限制,只有在基类自身的成员函数和友元函数中能访问。
  2. 通过Derived类对象
    • 可以访问public_member:由于public继承,基类Base的public成员在派生类Derived中仍是public的,通过Derived类对象可以直接访问。
    • 不能访问protected_member:protected成员的访问权限限制为只能在类及其派生类内部访问,通过对象不能访问。
    • 不能访问private_member:同上述原因,private成员具有最高访问权限限制,即使通过派生类对象也不能访问。