Virtual Function

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

#include<iostream>

#include<cmath>
using namespace std;
const float PI=3.14;
class shape
{
public:
virtual float area()=0;
virtual float perimeter()=0;

};
class circle:public shape
{
private:
float r;
public:
circle(float n)
{
r=n;
}
float area()
{
return PI*r*r;
}
float perimeter()
{
return 2*PI*r;
}
};
class triangle:public shape
{
private:
float side1,side2,side3;
float s;
public:
triangle(float s1,float s2,float s3)
{
side1=s1;
side2=s2;
side3=s3;
}
float area()
{
s=(side1+side2+side3)/2;
return sqrt(s*(s-side1)*(s-side2)*(s-side3));
}
float perimeter()
{
return side1+side2+side3;
}

};
class square:public shape
{
private:
float side;
public:
square(float s)
{
side=s;
}
float area()
{
return side*side;
}
float perimeter()
{
return 4*side;
}
};
int main()
{
shape *ptr;
ptr=new circle(3.0f);
cout<<"***************circle*****************"<<endl;
cout<<"Area = "<<ptr->area()<<endl;
cout<<"Perimeter = "<<ptr->perimeter()<<endl;
ptr=new triangle(5.0f,5.0f,5.0f);
cout<<"***************triange*****************"<<endl;
cout<<"Area = "<<ptr->area()<<endl;
cout<<"Perimeter = "<<ptr->perimeter()<<endl;
ptr=new square(2.0f);
cout<<"***************square*****************"<<endl;
cout<<"Area = "<<ptr->area()<<endl;
cout<<"Perimeter = "<<ptr->perimeter()<<endl;

/* shape *ptr;
circle c(3.0f);
triangle t(5.0f,5.0f,5.0f);
square s(2.0f);
ptr=&c;
cout<<"***************circle*****************"<<endl;
cout<<"Area = "<<ptr->area()<<endl;
cout<<"Perimeter = "<<ptr->perimeter()<<endl;
ptr=&t;
cout<<"***************triange*****************"<<endl;
cout<<"Area = "<<ptr->area()<<endl;
cout<<"Perimeter = "<<ptr->perimeter()<<endl;
ptr=&s;
cout<<"***************square*****************"<<endl;
cout<<"Area = "<<ptr->area()<<endl;
cout<<"Perimeter = "<<ptr->perimeter()<<endl;*/
/* shape *s[3];
s[0]=new circle(3.0f);
s[1]=new triangle(5.0f,5.0f,5.0f);
s[2]=new square(2.0f);
for (int i=0;i<3;i++)
{
cout<<"Area = "<<s[i]->area()<<endl;
cout<<"Perimeter = "<<s[i]->perimeter()<<endl;
cout<<"***************************************"<<endl;

}*/
return 0;
}

You might also like