回覆列表
-
1 # 發發發狗
相關內容
- 宣告一個基類Shape,在此基礎上派生出Rectangle和Circle,二者都有GetArea()函式計算物件的面積?
- 為什麼C++ 中,基類指標可以指向派生類物件?
- C#中基類的建構函式和解構函式為什麼不能被繼承?
- java反射建立物件的效率是怎樣的呢?
- 用c++ 定義一個車(Vehicle)基類,有Run,Stop等成員函式,由此派生出腳踏車(bicycle)類,汽車(motorcar)?
- 虛解構函式與非虛解構函式哪裡不一樣?
- 急求c++程式:宣告一個基類baseclass,有整形成員變數number,構造其派生類derivedclass?
- 定義一個矩形類Rectangle?
- java裡什麼叫,超類,父類,子類,派生類,基類 , 能用大白話說一下嗎網上資料看不明白?
#include<iostream>
#include<string>
using namespace std;
class Shape {
public:
Shape() {}
virtual ~Shape(){}
virtual float getArea() const { return 0; }
};
//長方形
class Rectangle :public Shape {
public:
Rectangle(float Length, float Width) :length(Length), width(Width) {}
float getArea() const { return length*width; }
float getLength() const { return length; }
float getWidth() const { return width; }
void setLength(float Length) { length = Length; }
void setWidth(float Width) { width = Width; }
private:
float length;
float width;
};
//圓形
class Circle :public Shape {
public:
Circle(float Radius) :radius(Radius){}
/*Circle() {}*/
float getArea() const { return radius*radius*3.14; }
float getRadius() const { return radius; }
void setRadius(float Radius) { radius = Radius; }
private:
float radius;
};
//正方形
class Sqare :public Rectangle {
public:
Sqare(float Side) :Rectangle(Side, Side){}
void setSide(float Side) //設定邊長
{
setLength(Side);
setWidth(Side);
}
float getSide() const //獲取邊長
{
return getWidth();
}
float getArea() const { return Rectangle::getArea(); }
};
void main()
{
Shape *p;
p = new Circle(5);
cout << "area of circle:" << p->getArea()<<endl;
p = new Rectangle(4, 8);
cout << "area of Rec:" << p->getArea() << endl;
}