阅读量:129
在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 class="hljs-meta">#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 class="hljs-meta">#endif // DERIVEDCLASS_H
多态
使用基类的指针或引用调用派生类的方法。
// main.cpp
#include
#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++实现继承和多态。