Virtual Functioncontd
Virtual Functioncontd
class Base
{
int x;
public:
virtual void fun() = 0; //pure virtual function
int getX() { return x; }
};
int main(void)
{
Derived d;
d.fun();
// Base B;
// B.fun();
return 0;
}
#include <iostream>
using namespace std;
// Abstract class
class Shape {
protected:
float dimension;
public:
void getDimension() {
cin >> dimension;
}
// Derived class
class Square : public Shape {
public:
float calculateArea() {
return dimension * dimension;
}
};
// Derived class
class Circle : public Shape {
public:
float calculateArea() {
return 3.14 * dimension * dimension;
}
};
int main() {
Square square;
Circle circle;
Shape *ptr;
ptr=□
cout << "Enter the length of the square: ";
ptr->getDimension();
cout << "Area of square: " << ptr->calculateArea() << endl;
ptr=&circle;
cout << "\nEnter radius of the circle: ";
ptr->getDimension();
cout << "Area of circle: " << ptr->calculateArea() << endl;
return 0;
}
#include<iostream>
using namespace std;
class b
{
public:
void display()
{
cout<<"I am inside base class display function\n";
}
virtual void output();
{
cout<<"I am in side base class output function\n";
}
};
class d1 :public b
{
public:
void display()
{
cout<<"I am inside derieved d1 class display function\n";
}
virtual void output()=0;
/*{
cout<<"I am in side derieved d1 class output function\n";
}*/
};
class d2 :public d1
{
public:
void display()
{
cout<<"I am inside derieved d2 class display function\n";
}
void output(){
cout<<"I am in side derieved d2 class output function\n";
}
};
int main()
{
b *bptr;//valid
b obj1;//invalid because we cannot create obj1 of class which has pure virtual
d1 obj2;
d2 obj3;
bptr=&obj1;
bptr->display();// base class display();
bptr->output();//base class output();
bptr=&obj2;
bptr->display();//base class display();
bptr->output(); // d1's output()
bptr=&obj3;
bptr->display();//base class display();
bptr->output();//d2's output();
}
#include<iostream>
using namespace std;
class b
{
public:
void display()
{
cout<<"I am inside base class display function\n";
}
virtual void output()
{
cout<<"I am in side base class output function\n";
}
};
class d1 :public b
{
public:
void display()
{
cout<<"I am inside derieved d1 class display function\n";
}
void output(){
cout<<"I am in side derieved d1 class output function\n";
}
};
class d2 :public d1
{
public:
void display()
{
cout<<"I am inside derieved d2 class display function\n";
}
void output(){
cout<<"I am in side derieved d2 class output function\n";
}
};
int main()
{
b *bptr;//valid
b obj1;//invalid because we cannot create obj1 of class which has pure virtual
d1 obj2;
d2 obj3;
bptr=&obj1;
bptr->display();// base class display();
bptr->output();//base class output();
bptr=&obj2;
bptr->display();//base class display();
bptr->output(); // d1's output()
bptr=&obj3;
bptr->display();//base class display();
bptr->output();//d2's output();
}
#include<iostream>
using namespace std;
class b
{
public:
void display()
{
cout<<"I am inside base class display function\n";
}
void output(){
cout<<"I am in side base class output function\n";
}
};
class d1 :public b
{
public:
void display()
{
cout<<"I am inside derieved d1 class display function\n";
}
virtual void output(){
cout<<"I am in side derieved d1 class output function\n";
}
};
class d2 :public d1
{
public:
void display()
{
cout<<"I am inside derieved d2 class display function\n";
}
void output(){
cout<<"I am in side derieved d2 class output function\n";
}
};
int main()
{
b *bptr;
b obj1;
d1 obj2;
d2 obj3;
bptr=&obj1;
bptr->display();// base class display();
bptr->output();//base class output();
bptr=&obj2;
bptr->display();//base class display();
bptr->output(); //base class output()
bptr=&obj3;
bptr->display();//base class display();
bptr->output();//base class output();
d1 *dptr;
//dptr=&obj1;//invalid
dptr=&obj2;
dptr->display();// d1's
dptr->output(); //d1's
dptr=&obj3;
dptr->display();// d1's
dptr->output(); // d2's
}