使用C++语言,写一个父类和至少一个子类,定义各自的 成员变量和成员函数,要求用到重载、继承、多态
时间: 2024-09-14 10:05:44 浏览: 47
cpu.rar_用c++类一个cpu
在C++中,可以通过继承(Inheritance)来创建子类(Derived class),并通过函数重载(Function Overloading)和函数重写(Function Overriding)来实现多态(Polymorphism)。下面是一个简单的例子:
首先定义一个父类(Base class):
```cpp
#include <iostream>
#include <string>
// 父类 Shape
class Shape {
protected:
std::string name;
public:
Shape(const std::string& name) : name(name) {}
// 纯虚函数,用于实现多态
virtual void draw() const = 0;
// 普通成员函数,用于展示名字
void showName() const {
std::cout << "Shape Name: " << name << std::endl;
}
};
```
然后定义至少一个子类:
```cpp
// 子类 Circle,继承自 Shape
class Circle : public Shape {
public:
Circle(const std::string& name) : Shape(name) {}
// 函数重写
void draw() const override {
std::cout << "Drawing Circle: " << name << std::endl;
}
};
// 可以再定义另一个子类 Square,继承自 Shape
class Square : public Shape {
public:
Square(const std::string& name) : Shape(name) {}
// 函数重写
void draw() const override {
std::cout << "Drawing Square: " << name << std::endl;
}
};
```
在这个例子中,父类 Shape 定义了一个纯虚函数 `draw()`,它被子类 Circle 和 Square 重写。这样,不同的子类可以提供自己特有的 `draw()` 实现。另外,`Shape` 类中还有一个 `showName()` 成员函数,它是普通成员函数,不需要重写。
使用时,我们可以这样操作:
```cpp
int main() {
Shape* shape1 = new Circle("Circle1");
Shape* shape2 = new Square("Square2");
shape1->draw(); // 调用 Circle 的 draw()
shape1->showName(); // 调用 Shape 的 showName()
shape2->draw(); // 调用 Square 的 draw()
shape2->showName(); // 调用 Shape 的 showName()
// 清理内存
delete shape1;
delete shape2;
return 0;
}
```
这段代码展示了如何使用继承和多态。`Shape` 类作为基类定义了接口,而 `Circle` 和 `Square` 类作为派生类提供了具体实现。通过基类指针调用 `draw()` 方法,实际执行的是子类的 `draw()` 实现,这就是多态。
阅读全文