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;
}
之前写过一个 联系我