C++ isn't really one language. The language has evolved in several ways over the years. C++11 is vastly different from the first incarnation.
In real-world programming you might therefore encounter many different styles: C++ used as a better C, C++ but with the coding style dictated by the C libraries that are used, C++ as "C with classes", C++ with STL, C++ with STL and Boost, and then C++11.
I would suggest C++11 or at least C++ with Boost. C++11 is the most modern, and shares some traits with other modern languages such as C#, Python and Ruby but which older versions of C++ lack. Also, several of the more recent additions to C++'s standard library have come from Boost.
C++ is also an incredibly complex language, with many workings that are more or less implicit. An assignment, parameter passing or return could involve several calls to virtual functions into the classes being used.
But once you have learned the philosophy behind programming in C++ and how to do it correctly, you will find that C++'s way is very powerful.
Objective-C is like "C + Smalltalk", and is mainly used by Apple because of historical reasons.