题目内容:
构建一个车(vehicle)基类,包含Run、Stop两个纯虚函数。由此基类,派生出(Car)轿车类,(truck)卡车类,在这两个类中别分定义Run和Stop两个函数,每个函数中输出 car 或者 truck is running 或 stopping。主函数中,分别实例化轿车类与卡车类,并构建基类指针,分别调用两个派生类对象的Run和Stop函数。
输出样例如下:
代码如下:
#include <iostream>
using namespace std;
class Vehicle
{
public:
virtual void Run() = 0;
virtual void Stop() = 0;
virtual ~Vehicle() {}
};
class Car : public Vehicle
{
public:
void Run()
{
std::cout << "Car is running." << std::endl;
}
void Stop()
{
std::cout << "Car is stopping." << std::endl;
}
};
class Truck : public Vehicle
{
public:
void Run()
{
std::cout << "Truck is running." << std::endl;
}
void Stop()
{
std::cout << "Truck is stopping." << std::endl;
}
};
int main()
{
Vehicle* vehicle1 = new Car();
Vehicle* vehicle2 = new Truck();
vehicle1->Run();
vehicle1->Stop();
vehicle2->Run();
vehicle2->Stop();
return 0;
}
这段 C++ 代码实现了一个简单的面向对象编程示例,通过抽象基类和派生类展示了多态性的概念。下面是这段代码的逐步解释:
1. 抽象基类Vehicle的定义
virtual void Run() = 0;
和virtual void Stop() = 0;
:这两个函数是纯虚函数,纯虚函数在基类中声明但没有实现,包含纯虚函数的类被称为抽象基类。抽象基类不能被实例化,其主要作用是为派生类提供统一的接口。virtual ~Vehicle() {}
:虚析构函数,确保在通过基类指针删除派生类对象时,能够正确调用派生类的析构函数,避免内存泄漏。2. 派生类Car的定义
class Car : public Vehicle
:Car
类继承自Vehicle
类,使用public
继承方式,意味着基类的public
和protected
成员在派生类中保持相同的访问权限。void Run()
和void Stop()
:实现了基类中定义的纯虚函数,提供了Car
类的具体行为。3. 派生类Truck的定义
- 与
Car
类类似,Truck
类也继承自Vehicle
类,并实现了基类的纯虚函数,提供了Truck
类的具体行为。4. 主函数
Vehicle* vehicle1 = new Car();
和Vehicle* vehicle2 = new Truck();
:创建了两个基类指针vehicle1
和vehicle2
,分别指向Car
和Truck
类的对象。这里体现了多态性,即基类指针可以指向派生类对象。vehicle1->Run();
和vehicle1->Stop();
:通过基类指针调用Run()
和Stop()
函数,由于这两个函数在基类中被声明为虚函数,实际调用的是派生类中实现的函数,输出相应的信息。vehicle2->Run();
和vehicle2->Stop();
:同理,通过基类指针调用Truck
类的Run()
和Stop()
函数。这段代码通过抽象基类和派生类展示了多态性的概念,使得程序可以通过基类指针调用派生类的具体实现。
觉得有帮助就给博主点个关注叭~~
有问题的可以私信或者在评论区一起交流
友友们一起加油叭QAQ