2023-4-15虚函数,数组

#include<bits/stdc++.h>
using namespace std;
class Shape{
public:
virtual double area()=0;
~Shape(){};
};
class Rectangle:public Shape{
private:
double width,height;
public:
Rectangle(double a,double b):width(a),height(b){};
double area(){
return width*height;
}
~Rectangle(){};
};
class Triangle: public Shape{
private:
double d,h;
public:
Triangle(double a,double b):d(a),h(b){};
double area(){
return d*h/2;
}
~Triangle(){};
};
class Circle: public Shape{
private:
double r;
public:
Circle(double a):r(a){};
double area(){
return 3.1415*r*r;
}
~Circle(){};
};
int main(){
double a,b,c,d,e;
cin>>a>>b>>c>>d>>e;
Circle c1(a);
Rectangle c2(b,c);
Triangle c3(d,e);
Shape*p[3];
p[0]=&c1;
p[1]=&c2;
p[2]=&c3;
printf("%.2f\n",p[0]->area());
printf("%.2f\n",p[1]->area());
printf("%.2f\n",p[2]->area());
return 0;
}

虚函数写在基类中,析构函数不写做纯虚函数,new 返回的是一个指针;

对指针复制要使用地址名,基类指针可以指向其派生类的对象。

posted @ 2023-04-15 21:57  mo寒流xing  阅读(42)  评论(0)    收藏  举报