In C++, a class contains at least one pure virtual function is an abstract class, and cannot be instantiated directly. C++ defines a abstract class without an abstract keyword.
* We cannot create the instance of abstract class.
* We can have pointers and references of abstract class type, but since abstract class cannot be instantiated, they will point or referenced to subclasses.
* A subclass of an abstract class can only be instantiated directly if all inherited pure virtual methods have been implemented.
* An abstract class can have constructors.
```
#include <iostream>
class Shape {
virtual int area() = 0;
};
class Square : Shape {
int i = 10;
public:
int area() { return i*i; }
};
int main() {
Square s;
std::cout<<s.area();
return 0;
}
```