以點類Point為基類公有派生圓類Circle,并以圓類Circle為基類公有派生球類Sphere,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用于顯示點的坐標資訊,顯示格式為:(x,y)
⑥公有成員函式double area() const用于計算點的面積,點的面積為0
###Circle類結構說明:
公有派生圓類Circle以點類Point為基類,相較于點類Point,Circle類的結構說明如下:
Circle類的資料成員包括:
①私有資料成員:X坐標x繼承自Point類,Y坐標y繼承自Point類。
②私有資料成員:半徑radius(double型)
③靜態資料常量PI(double型),其值為3.14159
Circle類成員函式包括:
①定義有參建構式Circle(double, double, double)和拷貝建構式Circle(Circle &),其中有參建構式引數包括圓心坐標和半徑,圓心呼叫Point類建構式進行構造,各引數默認值為0,輸出資訊“Circle Constructor run”,拷貝建構式輸出資訊“Circle CopyConstructor run”
②定義解構式,解構式輸出資訊“Circle Destructor run”
③定義公有函式成員:void setRadius(double)和double getRadius() const分別回傳和設定radius
④定義公有成員函式double circumference() const用于計算圓的周長
⑤多載double area() const用于計算圓的面積
⑥多載void show() const用于顯示圓的資訊,顯示格式為:
(圓心X坐標,圓心Y坐標),Radius=半徑
Sphere類結構說明:
公有派生球類Sphere以圓類Circle為基類,Sphere類的結構說明如下:
Sphere類的資料成員包括:
①私有資料成員:X坐標x繼承自Circle類,Y坐標y繼承自Circle類,半徑radius繼承自Circle類。
②靜態資料常量PI繼承自Circle類。
Sphere類成員函式包括:
①定義有參建構式Sphere(double, double, double)和拷貝建構式Sphere(Sphere &),其中有參建構式引數包括圓心坐標和半徑,圓心呼叫Point類建構式進行構造,各引數默認值為0,輸出資訊“Sphere Constructor run”,拷貝建構式輸出資訊“Sphere CopyConstructor run”
②定義解構式,解構式輸出資訊“Sphere Destructor run”
③定義公有成員函式double volume() const用于計算球的體積
④多載double area() const用于計算球的表面積
裁判測驗程式樣例:
#include <iostream>
using namespace std;
class Point{
protected:
double x;
double y;
public:
Point(double xv=0,double yv=0);//有參構造
Point(const Point &p); //拷貝構造
~Point(); //解構式
void show() const; //顯示Point資訊
double area()const; //面積=0
void setX(double xv); //設定X坐標
void setY(double yv); //設定Y坐標
double getX() const; //獲取X坐標
double getY() const; //獲取Y坐標
};
//有參構造
Point::Point(double xv,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;
}
//顯示Point
void Point::show() const{
cout<<"("<<x<<","<<y<<")";
}
//設定X坐標
void Point::setX(double xv){
x=xv;
}
//設定Y坐標
void Point::setY(double yv){
y=yv;
}
//面積函式
double Point::area() const{
return 0;
}
//獲取X坐標
double Point::getX() const{
return x;
}
//獲取Y坐標
double Point::getY() const{
return y;
}#include <iostream>
using namespace std;
//Point類
class Point{
protected:
double x;
double y;
public:
Point(double xv=0,double yv=0);//有參構造
Point(const Point &p); //拷貝構造
~Point(); //解構式
void show() const; //顯示Point資訊
double area()const; //面積=0
void setX(double xv); //設定X坐標
void setY(double yv); //設定Y坐標
double getX() const; //獲取X坐標
double getY() const; //獲取Y坐標
};
//有參構造
Point::Point(double xv,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;
}
//顯示Point
void Point::show() const{
cout<<"("<<x<<","<<y<<")";
}
//設定X坐標
void Point::setX(double xv){
x=xv;
}
//設定Y坐標
void Point::setY(double yv){
y=yv;
}
//面積函式
double Point::area() const{
return 0;
}
//獲取X坐標
double Point::getX() const{
return x;
}
//獲取Y坐標
double Point::getY() const{
return y;
}
/*請在這里填寫答案*/
//主函式
int main(void){
double r;
cin>>r;
Sphere s1(1,2,4),s2(s1);
s1.show();
cout<<endl<<"Area="<<s1.area()<<endl<<"Volume="<<s1.volume()<<endl;
s2.setRadius(r);
s2.Circle::show();
cout<<endl<<"Area="<<s2.Circle::area()<<endl<<"Circumference="<<s2.Circle::circumference()<<endl;
return 0;
}
輸入樣例:
6.0
輸出樣例:
Point Constructor run
Circle Constructor run
Sphere Constructor run
Point CopyConstructor run
Circle CopyConstructor run
Sphere CopyConstructor run
(1,2),Radius=4
Area=201.062
Volume=268.082
(1,2),Radius=6
Area=113.097
Circumference=37.6991
Sphere Destructor run
Circle Destructor run
Point Destructor run
Sphere Destructor run
Circle Destructor run
Point Destructor run
uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/275181.html
標籤:C++ 語言
上一篇:VS2019運營很慢怎么解決
下一篇:類的繼承與派生 以人類Person為基類公有派生學生類Student和教師類Teacher,main(void)函式完成對其的測驗
