C++构建基类求解答!

C++构建基类求解答!

构建一个基类Shape类,它是一个表示形状的抽象类,area()为求图形面积的虚函数。请从Shape类公有派生出圆类(Circle)和三角形类(Triangle),然后编制应用程序,建立圆类和三角形类对象,求圆和三角形的面积,并输出它们的有关数据。
(1)定义Shape类的公有成员函数area,并设置为虚函数。
(2)定义派生类Circle的私有数据成员r和s,分别表示圆的半径和面积,均为float型。
(3)定义派生类Triangle的私有数据成员w、h和s,分别表示三角形的底、高和面积,均为float型。
(4)分别完成派生类Circle和Triangle的构造函数的定义,实现数据成员的初始化。
(5)分别完成派生类Circle和Triangle的成员函数area的定义,求圆和三角形面积,并屏幕输出圆半径、面积,三角形底边、高和面积。
(6)编写主函数,创建Circle类对象c(5)和Triangle类对象t(3,4),向对象c和t分别发送area消息。程序运行结果如下。
圆半径:5 圆面积:78.5
三角形底边:3 三角形高:4 三角形面积:6

#include <iostream>
#include <iomanip>
using namespace std;
class Shape
{
public:
void area(){}

};

class Circle :public Shape
{
private:
    float r;
    float s;
public:
    Circle(float r,float s):Shape()
    {}
    void area()
    {
        Shape::area();
        s = 3.14 * r;
        cout << "圆半径:" << r;
        cout << "   圆面积:" << s<<endl;
    }
};

class Triangle :public Shape
{
private:
    float w; 
    float h; 
    float s;
public:
    Triangle(float w,float h,float s):Shape()
    {}
    void area()
    {
        Shape::area();
        s = w * h / 2;
        cout << "三角形底边:" << w;
        cout << "   " << "三角形高:" << h;
        cout << "   " << "三角形面积:" << s;
    }
};

int main()
{
    Circle c(5);
    Triangle t(3,4);
    c.area();
    t.area();

    return 0;


}

一个示例:

class Shape{
public:
    virtual void area()=0; // 这样是纯虚函数,也可以写成virtual void area(){}
};
class Circle: public Shape{
    float r;float s;
public:
    Circle(float _r):r(_r),s(_r*_r*3.14){}  // 也可以写成Circle(float _r):r(_r){s = _r*_r*3.14;}或者都在括号里赋值
    void area(){
        cout << "圆半径:" << r 
        << "圆面积:" << s << endl;  // 这里你写的没问题,这样写也可以运行
    }
};
class Triangle: public Shape{
    float w;float h;float s;
public:
    Triangle(float _w, float _h):w(_w),h(_h),s(0.5*_w*_h){}
    void area(){
        cout << "三角形底边:" << w
        << "三角形高:" << h
        << "三角形面积:" << s;
    }
};

int main(){
    Circle c(5);
    Triangle t(3,4);
    c.area();
    t.area();
    return 0;
}

img

之前写过一个 联系我