C++运行结果

来源:百度知道 编辑:UC知道 时间:2024/06/21 19:44:16
#include <iostream>
using namespace std;
const double pi=3.1415926;
class Shape
{
public:
virtual double GetArea()=0;
virtual double GetPerim()=0;

};
class Rectangle:public Shape
{
public:
double GetArea(){return width*length;}
double GetPerim(){return 2*(width+length);}
Rectangle(double w=0,double l=0){width=w,length=l;}
private:
double width;
double length;
};
class Circle:public Shape
{
public:
double GetArea(){return pi*r*r;}
double GetPerim(){return 2*pi*r;}
Circle(double R=0){r=R;}
private:
double r;
};
void main()
{
Rectangle rect(1,2);
Circle cir(4);

Shape *Shp[2]={&rect,&cir};
for(int i=0;i<2;++i)
{
cout<<Shp[i]->GetArea()<<endl;
cout<<Shp[i]->GetPerim()<<endl;
}
}

需要进行强制类型转换一下:
(Rectangle*)Shp[i]->GetArea()
(Rectangle*)Shp[i]->GetPerim()

这是因为存入的是Shape*的类型,而不是子类类型..要进行强制类型转换.
当然,你这个程序,有些错误~~第一个和第二个数组中的元素类型不同,一般不用
for语句实现

还真给忘了
自己去运行下嘛
去书上查查也有的