MST

星途 面试题库

面试题:C++派生新类步骤及对类层次结构的基础影响

请详细阐述在C++中从一个基类派生新类的主要步骤。并说明派生新类后,对原类层次结构在访问权限方面会产生哪些变化?
29.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

从基类派生新类的主要步骤:

  1. 定义派生类的声明:使用 class 关键字,后跟派生类的名称,然后使用 : 符号,接着指定继承方式(publicprotectedprivate)以及基类的名称。例如:
class DerivedClass : public BaseClass {
    // 派生类成员声明
};

这里 DerivedClass 是派生类,BaseClass 是基类,public 是继承方式。 2. 实现派生类的成员:在类声明之后,可以定义派生类中新增的成员函数和成员变量。如果派生类需要重写基类的虚函数,也在这个步骤中实现。例如:

class BaseClass {
public:
    virtual void print() {
        std::cout << "BaseClass print" << std::endl;
    }
};

class DerivedClass : public BaseClass {
public:
    void print() override {
        std::cout << "DerivedClass print" << std::endl;
    }
};

派生新类后对原类层次结构在访问权限方面的变化:

  1. public继承
    • 基类的 public 成员在派生类中仍然是 public 的。
    • 基类的 protected 成员在派生类中仍然是 protected 的。
    • 基类的 private 成员在派生类中不可访问。
  2. protected继承
    • 基类的 public 成员在派生类中变为 protected 的。
    • 基类的 protected 成员在派生类中仍然是 protected 的。
    • 基类的 private 成员在派生类中不可访问。
  3. private继承
    • 基类的 public 成员在派生类中变为 private 的。
    • 基类的 protected 成员在派生类中变为 private 的。
    • 基类的 private 成员在派生类中不可访问。

无论哪种继承方式,派生类对象无法直接访问基类的 private 成员,但可以通过基类提供的 publicprotected 接口来间接访问这些 private 成员。同时,派生类之间的访问权限遵循上述规则,不同继承方式会影响派生类对基类成员的访问以及派生类对象对基类成员的访问。