MST
星途 面试题库

面试题:C++中继承在代码复用方面如何解决函数重定义问题

在C++中,假设基类有一个成员函数 `printInfo` 用于打印一些基本信息。现有一个派生类,也需要打印类似但稍有不同的信息。请说明如何通过继承实现代码复用,避免在派生类中完全重写 `printInfo` 函数,同时给出简单的代码示例。
27.7万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 方法
    • 在基类中将 printInfo 函数声明为虚函数。这样在派生类中可以通过 override 关键字来重写该函数,在重写的函数中可以先调用基类的 printInfo 函数,然后再添加派生类特有的打印逻辑,从而实现代码复用。
  2. 代码示例
#include <iostream>

class Base {
public:
    virtual void printInfo() {
        std::cout << "This is basic information from base class." << std::endl;
    }
};

class Derived : public Base {
public:
    void printInfo() override {
        Base::printInfo();
        std::cout << "This is additional information from derived class." << std::endl;
    }
};

你可以使用以下方式测试这个代码:

int main() {
    Base* basePtr = new Derived();
    basePtr->printInfo();
    delete basePtr;
    return 0;
}

在上述代码中,Base 类的 printInfo 函数是虚函数,Derived 类重写了 printInfo 函数。在 Derived 类的 printInfo 函数中,先调用了基类的 printInfo 函数,然后输出了派生类特有的信息,实现了代码复用。在 main 函数中,通过基类指针调用 printInfo 函数,实际调用的是派生类重写后的 printInfo 函数。