C++ is well-suited for large projects that require efficient and finely controlled computation. Many operating systems are written in C++. It's also a good choice for scientific and parallel computing. While C code is strictly procedural, C++ code is more versatile: it can be procedural, objective, or mixed.
C++ programming requires a basic knowledge of how computers use memory. Variables must be declared. Large and/or dynamically-allocated data structures are handled with pointers. Some level of comfort at the command-line is also beneficial. Compilers might have to be configured, libraries potentially installed and linked, etc.
Opposite to C++ in many respects is a language like Python. Python is high-level, interpreted, and loosely-typed. It is ideal for scripting and rapid prototyping. Interestingly, C used to be the introductory language of choice in computer science curricula. But the recent trend has been to teach students the basic programming constructs (conditionals, iteration, etc.) in Python, saving concepts like memory management for later courses.