宣告一個圖形類Figure,其包含兩個純虛函式area( )和volume( ),
用于計算面積(或表面積)和體積。類Figure公有派生子類圓Circle,
其具有私有成員變數半徑radius.以及訪問半徑的公有成員函式setR()
和getR( ),圓可以計算面積而不能計算體積。通過類Circle公有派生
出兩個子類,分別是球類Sphere和圓柱體類Cylinder。圓柱體類包含
私有成員變數高height.球和圓柱體都可計算面積(即表面積)和體
積。在主函式main中,宣告球類和圓柱體類的物件sp和cy,通過
Figure的參考或指向Figure的指標計算并輸出兩個物件的表面積和體
積,展示面向物件程式設計的多型性。
這個怎么寫啊
uj5u.com熱心網友回復:
#include <iostream>
using namespace std;
class Figure {
public:
virtual float area() = 0;
virtual float volume() = 0;
};
#ifndef PI
#define PI 3.1415926
#endif
class Circle:public Figure {
public:
void setR(const int radius) {
this->radius = radius;
};
int getR( ) const {
return radius;
};
float area() {
return PI*radius*radius;
}
float volume() {
return 0;
}
private:
int radius;
};
class Sphere:public Circle {
public:
float area() {
return Circle::area() * 4;
}
float volume() {
return 4.0/3.0*PI*getR( )*getR( )*getR( );
}
};
class Cylinder:public Circle {
public:
float area() {
return Circle::area() * 2 + 2 * PI * getR() * height;
}
float volume() {
return Circle::area() * height;
}
void setH(const int height) {
this->height = height;
};
private:
int height;
};
void out(Figure & fi) {
cout<<"Area:"<<fi.area()<<"\t volume:"<<fi.volume()<<endl;
};
int main(int argc,char * argv[]) {
Sphere sp;
Cylinder cy;
sp.setR(3);
cy.setR(3);
cy.setH(3);
out(sp);
out(cy);
return 0;
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/47646.html
標籤:C++ 語言
上一篇:c++抽象類的子類中用到抽象類的資料成員會出錯為啥?
下一篇:鞏固
