/*
Author: Internshala
Module: Fundamentals of Object Oriented Programming Using C++
Topic: Abstract Class
*/
#include <iostream>
#include <new>
using namespace std;
class Animal { // Abstract class
public:
virtual void sound() = 0; // Pure virtual function
virtual void sleep() {
cout << "Animal class: sleeping" << endl;
}
};
class Dog : public Animal { // Concrete class
public:
virtual void sound() {
cout << "Dog class: bow-bow" << endl;
}
virtual void sleep() {
cout << "Dog class: sleeping" << endl;
}
};
int main() {
// Animal a; // a --> Animal object // Error. Cannot create an object of an abstract class.
Dog dog; // dog --> Dog object
dog.sound();
dog.sleep();
Animal *animal = new Dog(); // animal --> Dog object
animal->sound();
animal->sleep();
return 0;
}