Advantages of C++

Data abstraction : In OOP, the data abstraction is defined as a collection of data and methods (functions).
 
Data hiding : In C++, the class construct allows to declare data and member functions, as a public, private and protected group. The implementation details of a class can be hidden. This is done by the data hiding principle. 

Data encapsulation : The internal data (the member data) of a class are first separated from the outside world(the defined class). They are then put along with the member functions in a capsule. In other words, encapsulation groups all the pieces of an object into one neat package. It avoids undesired side effects of
the member data when it is defined out of the class and also protects the intentional misuse of important data. Classes efficiently manage the complexity of large programs through encapsulation. 

Inheritance : C++ allows a programmer to build hierarchy of classes. The derivation of classes is used for building hierarchy. The basic features of classes (parent or base classes) can be passed onto the derived classes ( child classes). In practice, the inheritance principle reduces the amount of writing; as the derived
classes do not have to be written again. 

Polymorphism : In OOP, polymorphism is defined as how to carry out different processing steps by a function having the same messages. Polymorphism treats objects of related classes in a generic manner.