abstract class in C++

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;
}
```