#include <iostream> #include <iomanip> #include <cmath> using namespace std; class Shape { public: virtual float area(){return 0;} virtual float volume(){return 0;} virtual void shapeName()=0; }; class Circle:public Shape { public: Circle(float r):radius(r){} float area(); void shapeName() { cout<<"Circle"<<endl; } private: float radius; }; float Circle::area() { return 3.14*radius*radius; } class Rectangle:public Shape { public: Rectangle(float a,float b):l(a),w(b){} float area(); void shapeName() { cout<<"Rectangle"<<endl; } private: float l,w; }; float Rectangle::area() { return l*w; } class Triangle:public Shape { public: Triangle(float a,float b,float c):l(a),w(b),h(c){} float area(); void shapeName() { cout<<"Triangle"<<endl; } private: float l,w,h; }; float Triangle::area() { float t,s; t=(l+w+h)/2.0; s=sqrt(t*(t-l)*(t-w)*(t-h)); return s; } int main() { Shape *p; Circle circle(1.0); Rectangle rectangle(2,3); Triangle triangle(3.0,4.0,5.0); p=&circle; p->shapeName(); cout<<p->area()<<endl; p=&rectangle; p->shapeName (); cout<<p->area()<<endl; p=▵ p->shapeName (); cout<<p->area()<<endl; return 0; }