用c++编写一个抽象类Shape,在此基础上派生出类Rectangle和Circle,二者都有计算对象面积的函数getArea(、计算对象周长的函数getPerim0,要求不使用虚函数
时间: 2024-02-12 18:03:58 浏览: 80
定义三个类Point,Circle和Cylinder,Point类为基类,为上述3个类添加计算面积的成员函数Area(),要求函数Area()采用虚函数的形式,并通过基类指针调用虚函数Area()。
抽象类Shape的代码如下:
```c++
class Shape {
public:
float getArea() const { return 0; }
float getPerim() const { return 0; }
};
```
派生类Rectangle和Circle的代码如下:
```c++
class Rectangle : public Shape {
public:
Rectangle(float w, float h) : width(w), height(h) {}
float getArea() const { return width * height; }
float getPerim() const { return 2 * (width + height); }
private:
float width, height;
};
class Circle : public Shape {
public:
Circle(float r) : radius(r) {}
float getArea() const { return 3.14 * radius * radius; }
float getPerim() const { return 2 * 3.14 * radius; }
private:
float radius;
};
```
这里的Shape类中的两个函数返回0,派生类Rectangle和Circle中的函数都使用了const关键字,表示它们不会修改成员变量的值,这样可以保证代码的安全性。由于不使用虚函数,因此在调用函数时没有多态的效果,但是可以提高代码的运行效率。
阅读全文