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 返回的是一个指针;
对指针复制要使用地址名,基类指针可以指向其派生类的对象。
浙公网安备 33010602011771号