MST
星途 面试题库

面试题:C++中如何通过继承实现代码复用

请描述在C++中,通过继承实现代码复用的基本原理,并举例说明如何定义基类和派生类,以及派生类如何复用基类的成员函数和成员变量。同时阐述public、protected、private继承方式对代码复用和访问权限的影响。
32.4万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

1. 通过继承实现代码复用的基本原理

在C++中,继承允许一个类(派生类)获取另一个类(基类)的属性和行为,从而实现代码复用。派生类可以复用基类已有的成员变量和成员函数,无需重新编写相同的代码,同时还能添加新的成员或重写基类的成员以满足特定需求。

2. 定义基类和派生类,以及派生类复用基类成员的示例

// 定义基类
class Animal {
public:
    // 基类的成员变量
    std::string name;
    // 基类的成员函数
    void speak() {
        std::cout << name << " makes a sound." << std::endl;
    }
};

// 定义派生类,继承自Animal
class Dog : public Animal {
public:
    void bark() {
        std::cout << name << " barks." << std::endl;
    }
};

在上述代码中,Animal是基类,Dog是派生类。Dog类通过public继承自Animal类,因此Dog类可以复用Animal类的name成员变量和speak成员函数。Dog类还可以定义自己特有的成员函数bark

3. public、protected、private继承方式对代码复用和访问权限的影响

  • public继承
    • 代码复用:派生类可以复用基类的所有非private成员。
    • 访问权限:基类的public成员在派生类中仍然是public的,基类的protected成员在派生类中仍然是protected的。这意味着派生类对象可以访问基类的public成员,派生类的成员函数可以访问基类的publicprotected成员。
  • protected继承
    • 代码复用:派生类可以复用基类的所有非private成员。
    • 访问权限:基类的publicprotected成员在派生类中都变为protected的。这意味着派生类对象不能直接访问基类的任何成员,只有派生类的成员函数可以访问基类的publicprotected成员。
  • private继承
    • 代码复用:派生类可以复用基类的所有非private成员。
    • 访问权限:基类的publicprotected成员在派生类中都变为private的。这意味着派生类对象不能直接访问基类的任何成员,而且派生类的成员函数也只能在派生类内部访问基类的publicprotected成员,无法在派生类的子类中访问这些成员。