使用C++语言,写一个父类和至少一个子类,定义各自的 成员变量和成员函数,要求用到重载、继承、多态
时间: 2024-09-19 17:05:16 浏览: 40
cpu.rar_用c++类一个cpu
在C++中,我们可以创建一个简单的例子来演示父类(Parent)和子类(Child)的概念,同时展示重载、继承和多态的运用。首先,我们定义一个父类`Shape`,包含一个通用的成员函数`perimeter()`,然后创建两个子类`Circle`和`Rectangle`,分别重载父类的`perimeter()`函数并体现多态。
```cpp
// 父类 Shape
class Shape {
public:
virtual double perimeter() const = 0; // 虚函数,用于子类覆盖
protected:
int sides; // 共享的成员变量
};
// 子类 Circle 继承自 Shape 并重载 perimeter()
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r), sides(1) {} // 构造函数
double perimeter() const override { return 2 * PI * radius; }
};
// 子类 Rectangle 继承自 Shape 并重载 perimeter()
class Rectangle : public Shape {
private:
double width, height;
public:
Rectangle(double w, double h) : width(w), height(h), sides(4) {}
double perimeter() const override { return 2 * (width + height); }
};
int main() {
Shape* shapes[] = {new Circle(5), new Rectangle(4, 6)}; // 多态实例化
for (auto shape : shapes) {
cout << "Perimeter of the shape is: " << shape->perimeter() << endl;
}
delete[] shapes; // 注意内存管理
return 0;
}
```
在这个例子中,`perimeter()`函数在每个子类中被重载,体现了多态性,即不同的形状会有不同的周长计算方式。虽然父类`Shape`没有直接指定每个形状的具体类型,但在运行时通过指向子类的对象调用`perimeter()`方法时,会自动调用相应子类的实现。
阅读全文