首页 > 编程语言 >c++打卡第三十二天

c++打卡第三十二天

时间:2023-05-20 22:44:13浏览次数:40  
标签:const 函数 Point double void c++ Circle 打卡 第三十二

以点类Point及平面图形类Plane为基础设计圆类Circle

一、问题描述

以点类Point及平面图形类Plane为基类公有派生圆类Circle,main(void)函数完成对其的测试。

Point类结构说明:

Point类的数据成员包括:
①私有数据成员:X坐标x(double型),Y坐标y(double型)。
Point类成员函数包括:
①有参构造函数Point(double, double)和拷贝构造函数Point(const Point &),其中有参构造函数参数默认值为0,输出信息“Point Constructor run”,拷贝构造函数输出信息“Point CopyConstructor run”
②析构函数,析构函数输出信息“Point Destructor run”
③公有函数成员void setX(double)和double getX() const分别返回和设置X坐标
④公有函数成员void setY(double)和double getY() const分别返回和设置Y坐标
⑤公有成员函数void show() const用于显示点的坐标信息,显示格式为:Point(X=<X坐标>,Y=<Y坐标>)

Plane类结构说明:

抽象类Plane类的成员函数包括:
①纯虚函数virtual double length()const用于计算平面图形的周长
②纯虚函数virtual double area()const用于计算平面图形的面积

Circle类结构说明:

公有派生圆类Circle以点类Point、平面图形类Plane为基类,Circle类的结构说明如下:
Circle类的数据成员包括:
①圆心坐标继承自Point类
②保护静态数据常量PI(double型),其值为3.14159
③私有数据成员:半径radius(double型)。
Circle类成员函数包括:
①有参构造函数Circle(double, double, double)和拷贝构造函数Circle(const Circle &),其中有参构造函数参数包括圆心坐标和半径,圆心调用Point类构造函数进行构造,各参数默认值为0,输出信息“Circle Constructor run”,拷贝构造函数输出信息“Circle CopyConstructor run”
②析构函数,析构函数输出信息“Circle Destructor run”
③公有函数成员void setR(double)和double getR()const分别返回和设置radius
④重载void show()const用于显示圆的信息,显示格式为:
Circle(Point(<圆心X坐标>,<圆心Y坐标>),Radius=<半径>)
⑤重载double area()const用于计算圆的面积
⑥重载double length()const用于计算圆的周长

裁判测试程序样例:

#include <iostream>
using namespace std;
//点类Point
class Point{
private:
double x;
double y;
public:
Point(double xv=0,double yv=0);/*构造函数*/
Point(const Point &p); /*拷贝构造*/
~Point(); /*析构函数*/
virtual void show()const; /*显示*/
void setX(double xv); /*设置X坐标*/
void setY(double yv); /*设置Y坐标*/
double getX() const; /*获取X坐标*/
double getY() const; /*获取Y坐标*/
};
Point::Point(const double xv,const double yv){/*构造函数*/
x=xv;
y=yv;
cout<<"Point Constructor run"<<endl;
}
Point::Point(const Point &p){/*拷贝构造*/
x=p.x;
y=p.y;
cout<<"Point CopyConstructor run"<<endl;
}
Point::~Point(){/*析构函数*/
cout<<"Point Destructor run"<<endl;
}
void Point::show() const{/*显示*/
cout<<"Point(X="<<x<<",Y="<<y<<")";
}
void Point::setX(double xv){/*设置X坐标*/
x=xv;
}
void Point::setY(double yv){/*设置Y坐标*/
y=yv;
}
double Point::getX() const{/*获取X坐标*/
return x;
}
double Point::getY() const{/*获取Y坐标*/
return y;
}
class Plane{/*平面图形基类*/
public:
virtual double length()const=0;/*周长*/
virtual double area()const=0; /*面积*/
};

/*请在这里填写答案*/

void show(Point *p){/*点基类的显示函数*/
p->show();
}
void length(Plane *p){/*平面图形的周长函数*/
cout<<"Length="<<p->length()<<endl;
}
void area(Plane &p){/*平面图形的面积函数*/
cout<<"Area="<<p.area()<<endl;
}
//主函数
int main(void){
double x,y,r;
Circle c1,c2(c1);
show(&c1);
cout<<endl;
area(c1);
length(&c1);
cin>>x>>y>>r;
c2.setX(x);
c2.setY(y);
c2.setR(r);
show(&c2);
cout<<endl;
area(c2);
length(&c2);
}

二、代码实现

#define PI 3.14159
class Circle:public Point,public Plane
{
private:
double radius;
public:
Circle(double a=0, double b=0, double c=0):Point(a,b)
{
radius=c;
cout<<"Circle Constructor run"<<endl;
}
Circle(const Circle &p):Point(p)
{
radius=p.radius;
cout<<"Circle CopyConstructor run"<<endl;
}
~Circle()
{
cout<<"Circle Destructor run"<<endl;
}
void show()const
{
cout<<"Circle(Point(X="<<getX()<<",Y="<<getY()<<"),Radius="<<radius<<")";
}
double area()const
{
return PI*radius*radius;
}
double length()const
{
return 2*PI*radius;
}
void setR(double r)
{
radius=r;
}
double getR()const
{
return radius;
}
};

三、结果实现

Point Constructor run
Circle Constructor run
Point CopyConstructor run
Circle CopyConstructor run
Circle(Point(X=0,Y=0),Radius=0)
Area=0
Length=0
Circle(Point(X=1,Y=2),Radius=3)
Area=28.2743
Length=18.8495
Circle Destructor run
Point Destructor run
Circle Destructor run
Point Destructor run

标签:const,函数,Point,double,void,c++,Circle,打卡,第三十二
From: https://www.cnblogs.com/zzqq1314/p/17417935.html

相关文章

  • 每日打卡
    素数问题描述:求一个范围内的所有素数问题分析:素数指除了1和本身外没有因数的数,2是最小的素数,所以判断一个数是否为质数可以看从2到其平方根的范围内有没有其的因数,有整数平方根的数不可能是素数代码:#include<stdio.h>#include<math.h>intmain(){intstart,end,i,k,m,count......
  • C/C++程序设计课设题[2023-05-20]
    C/C++程序设计课设题[2023-05-20]ATM仿真系统-薛景背单词-叶水仙-理科实验班电信优惠套餐推荐系统的设计与实现-朱立华-通信工程多媒体文件管理及检索系统-刘林峰-广播电视工程公交路线自动化选择系统实现-张勤-测控技术与仪器基于朋友圈的商品推荐-汪云云-自动化基于数据......
  • 5月19日打卡
    例5-1题目:作用域实例clude<iostream>usingnamespacestd;inti;intmain#in(){i=5;{inti;i=7;cout<<"i="<<i<<endl;}cout<<"i="<<i<<endl;retur......
  • 5.20打卡
      3.程序流程图4.代码实现#include<bits/stdc++.h>usingnamespacestd;intmain(){intt,a[5];longintk,i;for(i=95860;;i++){for(t=0,k=100000;k>=10;t++){a[t]=(i%k)/(k/10);k/=10;......
  • 打卡第二十九天
    多边形周长计算一、1.先定义一个多变型类,定义边长,输入函数,输出函数2.定义派生类矩形类,等边类二、三、#include<iostream>usingnamespacestd;classpolygon{protected: intnumber;private: intside_length[100];public: polygon()=default; polygon(intn) { number=......
  • 每天打卡一小时 第三十一天 PTA520钻石 争霸赛
    第一题  源代码#include<iostream>usingnamespacestd;intmain(){intn;cin>>n;cout<<"520"<<n<<"Times!";}第一题,简简单单打印输出第二题 源代码#include<iostream>usingnamespacestd;intmain(......
  • vscode c++链接mongo数据库的操作随笔
     1、需要先下载安装各种软件及依赖1)c++链接mongo数据库需要涉及到这几个库,而且版本直接有范围boostcmakelibbsonmingwmongo-copensslgccmongocxx  2、vscode安装,用vscode的好处就是会省事情很多1)下载安装vscode2022版本2)也可以用vscode进行安装上面的各种类库......
  • 【重学C++】01| C++ 如何进行内存资源管理?
    文章首发【重学C++】01|C++如何进行内存资源管理?前言大家好,我是只讲技术干货的会玩code,今天是【重学C++】的第一讲,我们来学习下C++的内存管理。与java、golang等自带垃圾回收机制的语言不同,C++并不会自动回收内存。我们必须手动管理堆上内存分配和释放,这往往会导致内存泄漏......
  • C++中动态和静态库(dll) 使用(转)
    目录:1.lib与dll介绍2.动态库的生成与使用3.静态库的生成与使用 1.首先介绍下静态库(静态链接库,.lib文件),动态库*(动态链接库,.dll文件)的概念,两者都是代码共享的方式.静态链接:静态链接是指在编译的时候就把模块的内容加载进来一起编译,这样编出来的exe文件包含了模块......
  • C/C++学生宿舍管理系统[2023-05-20]
    C/C++学生宿舍管理系统[2023-05-20]课程报告任务书题目学生宿舍管理系统主要内容用C语言开发一个简单的学生宿舍管理系统。实现宿舍信息管理,用户信息管理以及住宿管理功能。【数据结构】1.宿舍信息。包括:宿舍编号、所属楼号,所属楼层、面积、床位数等。2.登陆账号信息。包括:......