在C++中,继承和多态是面向对象编程的两个核心概念。继承允许一个类(子类)继承另一个类(父类)的属性和方法,而多态允许子类以不同的方式实现父类的方法。以下是在Ubuntu环境下使用C++实现继承和多态的基本步骤:
// BaseClass.h
#ifndef BASECLASS_H
#define BASECLASS_H
class BaseClass {
public:
BaseClass() {}
virtual ~BaseClass() {}
virtual void display() const {
std::cout << "Display from BaseClass" << std::endl;
}
};
#endif // BASECLASS_H
// DerivedClass.h
#ifndef DERIVEDCLASS_H
#define DERIVEDCLASS_H
#include "BaseClass.h"
class DerivedClass : public BaseClass {
public:
DerivedClass() {}
~DerivedClass() override {}
void display() const override {
std::cout << "Display from DerivedClass" << std::endl;
}
};
#endif // DERIVEDCLASS_H
使用基类的指针或引用调用派生类的方法。
// main.cpp
#include <iostream>
#include "BaseClass.h"
#include "DerivedClass.h"
int main() {
BaseClass* basePtr;
DerivedClass derivedObj;
// 指向派生类对象
basePtr = &derivedObj;
// 调用派生类的display方法
basePtr->display(); // 输出: Display from DerivedClass
return 0;
}
在Ubuntu终端中,你可以使用g++编译器来编译和运行上述代码:
g++ -o polymorphism_example main.cpp BaseClass.cpp DerivedClass.cpp
./polymorphism_example
BaseClass
是一个基类,包含一个虚函数 display
。DerivedClass
继承自 BaseClass
,并重写了 display
方法。basePtr
调用 display
方法时,实际调用的是派生类 DerivedClass
的 display
方法。virtual
关键字声明基类中的方法,以便在派生类中重写。override
关键字可以确保派生类正确地重写了基类的虚函数。virtual
,以确保通过基类指针删除派生类对象时能正确调用派生类的析构函数。通过这种方式,你可以在Ubuntu环境下使用C++实现继承和多态。