C++ is a complete object oriented language. Complete in the sense is if you know the basic concept of C++ you can understand other OOP language easily like Java, C#, VB.NET etc. C++ is complicated, well you are not completely wrong. As a C++ programmer you have the total control in your hand.
If you are using Java or .NET then there is a framework to help you. At the same time you are bound to the framework. In C++ you are not. Now think every power comes with responsibly. To know your responsibilities better you have to understand the inner working of the C++ clearly. For example memory management is done by the .NET framework as well as JVM both. But in C++ you have to manage the lifetime of your objects yourself. That actually mean two things. First, as a C++ programmer you have responsibly for lifetime management for your objects and the second one you have the power and flexibility. Many good applications developed with C++ like Google search engine, Windows operating system to name a few. Some company developed their own language or framework using C++. For example Microsoft uses a language which is like core C++ is VC++ (Visual C++).
There are also some C++ complicacy which are not in other OOP languages like Java and .NET languages. As an example in C++ one class can have more than one base class. But in Java and .NET languages you can not. A class can have only one base class. Multiple inheritance concept is not there. If you have similar kind of design situation then you can use interface in those languages to solve it. But be clear using interface is not equivalent to multiple inheritance.
In the learning process of C++ don’t think that every part of it is tough. It is very logical language. When you start to develop real world application with it then you can find some part of it tough to learn and handle. If you can learn the tough part of it then you can enjoy.