在C++中,继承和多态是面向对象编程的两个核心概念。以下是在CentOS环境下实现继承和多态的基本步骤:
定义基类: 基类是派生类的父类,它定义了一些公共的属性和方法。
// Base.h
#ifndef BASE_H
#define BASE_H
class Base {
public:
Base() {}
virtual ~Base() {} // 虚析构函数,确保派生类的析构函数被调用
virtual void display() const {
std::cout << "Display Base" << std::endl;
}
};
#endif // BASE_H
定义派生类: 派生类继承基类的属性和方法,并可以添加新的属性和方法。
// Derived.h
#ifndef DERIVED_H
#define DERIVED_H
#include "Base.h"
class Derived : public Base {
public:
Derived() {}
~Derived() override {}
void display() const override {
std::cout << "Display Derived" << std::endl;
}
void derivedFunction() const {
std::cout << "Derived Function" << std::endl;
}
};
#endif // DERIVED_H
多态允许你使用基类的指针或引用来调用派生类的方法。
使用基类指针调用派生类方法:
#include <iostream>
#include "Base.h"
#include "Derived.h"
int main() {
Base* basePtr;
Derived derivedObj;
basePtr = &derivedObj;
// 调用派生类的display方法
basePtr->display(); // 输出: Display Derived
// 调用派生类的derivedFunction方法(需要类型转换)
dynamic_cast<Derived*>(basePtr)->derivedFunction(); // 输出: Derived Function
return 0;
}
使用虚函数实现运行时多态:
在基类中使用virtual
关键字声明的方法可以在派生类中被重写,并且在运行时根据对象的实际类型调用相应的方法。
// Base.h
class Base {
public:
virtual void display() const {
std::cout << "Display Base" << std::endl;
}
};
// Derived.h
class Derived : public Base {
public:
void display() const override {
std::cout << "Display Derived" << std::endl;
}
};
在CentOS环境下,你可以使用g++编译器来编译和运行你的C++程序。
g++ -o polymorphism_example main.cpp Base.cpp Derived.cpp
./polymorphism_example
class Derived : public Base
实现。希望这些步骤能帮助你在CentOS环境下实现C++的继承和多态。如果有任何问题,请随时提问!