MST

星途 面试题库

面试题:C++ 中类与对象代码复用之继承相关问题

在C++ 中,通过继承实现代码复用。假设有一个基类`Animal`,包含成员函数`void eat()`和`void sleep()`。现在有一个派生类`Dog`继承自`Animal`。请编写代码实现以下功能:在`Dog`类中重写`eat`函数,使其在调用时输出`Dog is eating`,并在主函数中创建`Dog`类对象并调用`eat`和`sleep`函数。同时解释`public`、`protected`和`private`继承方式对基类成员在派生类中的访问权限有何影响。
40.2万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

class Animal {
public:
    void eat() {
        std::cout << "Animal is eating" << std::endl;
    }
    void sleep() {
        std::cout << "Animal is sleeping" << std::endl;
    }
};

class Dog : public Animal {
public:
    void eat() override {
        std::cout << "Dog is eating" << std::endl;
    }
};

int main() {
    Dog dog;
    dog.eat();
    dog.sleep();
    return 0;
}

继承方式对基类成员访问权限的影响

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