首页 > 编程语言 >C++

C++

时间:2023-05-19 19:55:08浏览次数:40  
标签:return Area double shape C++ Shape public

定义抽象基类Shape,由它派生出五个派生类:Circle(圆形)、Square(正方形)、Rectangle( 长方形)、Trapezoid (梯形)和Triangle (三角形),用虚函数分别计算各种图形的面积,并求出它们的和。要求用基类指针数组。使它的每一个元素指向一个派生类的对象。

#include <iostream>
using namespace std;

class Shape
{
public:
Shape()
{}
Shape(double s[])
{}
virtual double Area()=0;

};
class Circle:public Shape
{
public:
Circle(double r)
{
this->r=r;
}
double Area()
{
return r*r*3.1415926;
}
private:
double r;
};

class Square:public Shape
{
public:
Square(double a)
{
this->a=a;
}
double Area()
{
return a*a;
}
private:
double a;
};

class Rectangle:public Shape
{
public:
Rectangle(double x,double y)
{
this->x=x;
this->y=y;
}
double Area()
{
return x*y;
}
private:
double x;
double y;
};

class Trapezoid:public Shape
{
public:
Trapezoid(double w,double m,double h)
{
this->w=w;
this->m=m;
this->h=h;
}
double Area()
{
return ((w+m)*h)/2;
}
private:
double w;
double m;
double h;
};

class Triangle:public Shape
{
public:
Triangle(double l,double z)
{
this->l=l;
this->z=z;
}
double Area()
{
return l*z/2;
}
private:
double l;
double z;
};

int main()
{
Shape* shape[5];
double r,a,x,y,w,m,h,l,z;
cin>>r>>a>>x>>y>>w>>m>>h>>l>>z;
shape[0]=new Circle(r);
shape[1]=new Square(a);
shape[2]=new Rectangle(x,y);
shape[3]=new Trapezoid(w,m,h);
shape[4]=new Triangle(l,z);
cout<<"total of all areas = "<<shape[0]->Area()+shape[1]->Area()+shape[2]->Area()+shape[3]->Area()+shape[4]->Area();
return 0;
}

标签:return,Area,double,shape,C++,Shape,public
From: https://www.cnblogs.com/zh-ang-zhang/p/17416134.html

相关文章

  • C++ 如何快速实现一个容器的迭代器
    C++如何快速实现一个容器的迭代器引言C++的标准库中的容器都会提供迭代器,如果一个容器满足forward_range,那么这个容器一般会提供以下成员类型和函数:iteratorconst_iteratorbeginendbegincend如果该容器还满足bidirectional_range,那么该容器还会额外提供以下成员类型和......
  • 详解c++STL—容器set/multiset
    1、set基本概念1.1、功能所有元素都会在插入时自动被排序1.2、本质:set/multiset属于关联式容器,底层结构是用二叉树实现。1.3、set和multiset区别set不允许容器中有重复的元素multiset允许容器中有重复的元素2、set构造和赋值2.1、功能描述创建set容器以及赋值2.1、构造set<T>st;/......
  • c++局部静态变量是线程安全的
    mark一下。c++11之前,局部静态变量初始化并不是线程安全的。c++11之后,当局部静态在初始化的过程中,有新的获取,会阻塞等待初始化成功。classInstance{public://... staticGetInstace() { staticInstanceinstance; returninstance; }};new,理论上应该也是可以的,......
  • 《C++ string类》
    1.string类常见的构造函数1)string(constchar*s):将string对象初始化为s指向的字符串stringstr("Hello!"); 2)string(size_typen,charc):创建一个包含n个元素的string对象,其中每个元素都被初始化为字符cstringstr(10,'a'); 3)string(conststring&str)......
  • C++中使用强类型的Enum Class
    在C++中,有Enumclass这种说法,在EffectivemodernC++这本书中,也提到Preferscopedenumstounscopedenum,就是说要用有范围的enumclass代替没有范围的enum.为什么会有这个问题呢?我们来看一个C++里面使用传统enum的例子:enumShape{circle,retangle};autocircle=10;......
  • 开心档之C++ Web 编程
    C++Web编程什么是CGI?公共网关接口(CGI),是一套标准,定义了信息是如何在Web服务器和客户端脚本之间进行交换的。CGI规范目前是由NCSA维护的,NCSA定义CGI如下:公共网关接口(CGI),是一种用于外部网关程序与信息服务器(如HTTP服务器)对接的接口标准。目前的版本是CGI/1.1,CGI/......
  • 开心档之C++ 变量类型
    C++变量类型变量其实只不过是程序可操作的存储区的名称。C++中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不......
  • c++函数参数和返回值
    c++函数参数和返回值函数存储位置函数参数入栈顺序初始化列表函数的返回值用参数引用来返回返回一个参数指针返回一个对象总结函数的几种变体inline函数函数对象lambda函数c++函数参数和返回值c++一直以来是一个关注效率的代码,这样关于函数的参数传递......
  • Qt C++5.9开发指南
     第1章认识Qt1.1Qt简介1、Qt是一套应用程序开发类库,但与MFC不同,Qt是跨平台开发类库。2、跨平台意味着只需要编写一次程序,在不同平台上无需改动或只是需要少许改动后再编译,就可以形成不同平台上运行的版本。1.2Qt的获取与安装1.2.1Qt的许可类型1.2.2Qt的版本1、如果不......
  • c++ 输入文件流ifstream用法详解[转]
    目录文章目录输入流的继承关系:成员函数Publicmemberfunctions1,(constructor)2,ifstream::open3,ifstream::is_open4,ifstream::close5,ifstream::rdbuf6,ifstream::operator=Publicmemberfunctionsinheritedfromistream7,std::istream::operator>>8,istream::gcount9,istr......