抽象类实例
#include <iostream>
using namespace std;
class? Shape
{
public:
?virtual double area()=0;
};
/*三角形類*/
class Trigon:public Shape
{
protected:
?double h,w;
public:
?Trigon(double H,double W)
?{
??h=H;
??w=W;
?}
?double area()
?{
??return h*w/2;
?}
};
/*正方形類*/
class Square:public Trigon
{
public:
?Square (double H,double W):Trigon(H,W){}
?double area(){return h*w;}
};
/*圓??? 類*/
class Circle:public Shape
{
protected:
?double raius;? /*半徑*/
public:
?Circle(double r){raius=r;}
?double area()
?{return raius*raius*3.14;}
};
int main()
{
?Shape *p;
?int choice=0;
??while(1)
??{
???bool quit=false;
???cout<<"[0]退出[1]三角形[2]正方形[3]圓"<<endl<<"請選擇:";
???cin>>choice;
???switch (choice)
???{
???case 0:
????quit=true;
????break;
???case 1:
????p=new Trigon(5.0,6.0);
????cout<<"三角形的面積:"<<p->area()<<endl;
????break;
???case 2:
????p=new Square(60,60);
????cout<<"正方形的面積:"<<p->area()<<endl;
????break;
???case 3:
????p=new Circle(9.0);
????cout<<"圓的面積:"<<p->area()<<endl;
????break;
???default:cout<<"請輸入0到3之間的數字!"<<endl;
????break;
???}
???if (choice<4&&choice>0)
???{
????delete p;
???}
???if (quit==true)
???{
????break;
???}
??}
?return 0;
}
總結