面试题答案
一键面试- 默认继承访问控制权限:
- 当使用
class
关键字进行继承时,默认的继承访问控制权限是private
。 - 当使用
struct
关键字进行继承时,默认的继承访问控制权限是public
。
- 当使用
- 分析
Derived
类对Base
类各成员的访问情况:- 使用
class
继承:- 公有成员(
public
):在Derived
类中变为私有成员。原因是class
默认是私有继承,基类的公有成员在派生类中访问权限降低为私有,这意味着Derived
类的成员函数可以访问这些成员,但外部代码无法通过Derived
类的对象访问。 - 私有成员(
private
):Derived
类无法直接访问基类的私有成员。这是因为私有成员对于类的外部(包括派生类)是完全隐藏的,即使是通过继承也不能访问。 - 保护成员(
protected
):在Derived
类中变为私有成员。因为class
默认私有继承,保护成员在派生类中的访问权限也降低为私有,Derived
类的成员函数可以访问,但外部代码无法通过Derived
类的对象访问,且Derived
类的派生类也无法访问(因为已经是私有)。
- 公有成员(
- 使用
struct
继承:- 公有成员(
public
):在Derived
类中仍然是公有成员。因为struct
默认是公有继承,基类的公有成员在派生类中保持公有访问权限,这意味着Derived
类的成员函数可以访问,外部代码也可以通过Derived
类的对象访问。 - 私有成员(
private
):同class
继承情况,Derived
类无法直接访问基类的私有成员。私有成员的访问限制不受继承方式影响,始终对外部(包括派生类)隐藏。 - 保护成员(
protected
):在Derived
类中仍然是保护成员。因为struct
默认公有继承,保护成员在派生类中保持保护访问权限,Derived
类的成员函数可以访问,外部代码无法通过Derived
类的对象访问,但Derived
类的派生类可以访问。
- 公有成员(
- 使用