MST

星途 面试题库

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

在C++中,有类A作为基类,类B继承自类A。若类A中的成员变量为protected,类B以public方式继承类A,类B的成员函数能否访问该成员变量?若类B以private方式继承类A,情况又如何?请说明原因。
32.4万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 当类B以public方式继承类A时
    • 类B的成员函数可以访问类A中protected的成员变量。
    • 原因:在C++中,protected成员变量对于派生类(这里是类B)来说是可访问的。当以public方式继承时,基类(类A)的protected成员在派生类(类B)中仍然保持protected属性,所以类B的成员函数可以访问类A的protected成员变量。
  2. 当类B以private方式继承类A时
    • 类B的成员函数可以访问类A中protected的成员变量。
    • 原因:虽然是以private方式继承,基类(类A)的protected成员在派生类(类B)中变为private属性,但类B的成员函数仍然可以访问自身类中的private和protected成员,所以类B的成员函数能访问类A的protected成员变量。不过从类B外部就无法访问该成员变量了,因为它在类B中是private属性。