MST

星途 面试题库

面试题:C++中不同继承方式下对虚基类访问的基础规则

在C++中,当使用public、private、protected三种继承方式继承含有虚基类的类时,分别描述派生类对象对虚基类成员的访问权限有何不同?
45.6万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. public继承
    • 派生类对象可以访问虚基类的public成员。因为public继承保持了基类成员在派生类中的访问权限,所以虚基类的public成员在派生类中仍是public,可被派生类对象访问。
    • 派生类对象不能访问虚基类的private成员。private成员对于类外部(包括派生类对象)始终是不可访问的。
    • 派生类对象不能直接访问虚基类的protected成员。protected成员只能被派生类的成员函数和友元函数访问,而不能被派生类对象直接访问。
  2. private继承
    • 派生类对象不能访问虚基类的任何成员(public、private、protected)。因为private继承会将基类的所有成员(除了构造函数和析构函数)在派生类中变为private,而private成员对于类外部(包括派生类对象)是不可访问的。
  3. protected继承
    • 派生类对象不能访问虚基类的任何成员(public、private、protected)。protected继承将基类的public和protected成员在派生类中变为protected,而protected成员不能被派生类对象直接访问,private成员同样不可访问。