There are many reasons for wanting to learn a new language, whether C++ or something else. I'll try to make this general enough to address Timothy Truckle's concerns in a comment, but also the questioner's direct question.
If you are a scholar you learn a new language because it gives you some additional perspective on programming that the languages you already know don't possess. For example, some major programming paradigms are imperative, object-oriented, functional, and logic. The scholar will want to know at least the essence of a language from each group.
If you are a prospective employee (such as a student) you probably want to know several languages, even if they are quite similar (ruby, python) because it might give you an edge in getting a job.
If you are already employed you use the language of the group you are with, even COBOL. Occasionally a group will want to change languages and when this happens, knowing the new language will, hopefully, prevent your getting replaced.
If you simply have a program to write, use the language you know best unless (a) it is inappropriate to the task or (b) you want to wear the scholar hat for a while.
Sometimes you choose a language for no other reason than the set of libraries that it is offered with. Those libraries may do most of the work for you in the current task, so don't underestimate the importance of this.
As to the question of C++ vs Java, they are similar on the surface, but have deep differences. Java is a fairly pure OO language, though there have been improvements since it was introduced. C++, on the other hand is a true multi-paradigm language. It is not, however, an OO language, strictly speaking, though it can be programmed that way. It is much stronger as a Data Abstraction language than an OO language, but you need to become familiar with the Standard Template Library to be able to clearly see the difference between that and OO.
From the scholar's standpoint, the great thing about Java, and the reason it is a good first language, is that it takes many decisions and concerns out of the hands of the application programmer and handles them automatically. The biggest of these is memory management, especially the heap. Java's garbage collector means that you needn't concern yourself with the lifetime of objects except in extreme cases. These cases don't arise for beginners, and when they do, Java is not likely to be the best language (billions of objects existing simultaneously, for example).
Still from the standpoint of the scholar, programming in C++ will force you to think at a more detailed level. This isn't ideal for the beginner, but every master programmer needs to do the nitty-gritty at some point, and C++ forces you there.
Java is a much more abstract language. For example, it has only single inheritance, so using formal interfaces is much more important there. The "meaning" of code can be expressed in Java Docs for interfaces rather than in the code itself (though there is danger there, of course). If you program wisely in Java those Java Docs on the Interfaces are likely all of the "comments" that your code needs.
Multiple inheritance in C++ holds many pitfalls, that are overcome with attention to detail and with a level of planning that you don't need in Java, since that alternative isn't available. Combining two superclasses as parents of a subclass can lead to poor design if not done wisely. That isn't a stroke against C++ but a warning that the programmer needs to develop additional skills to avoid pitfalls.
Other things in C++ are more complex than in Java. Visibility, for example, and especially friend classes. Also includes, namespaces, and some lower-level things such as structs. Again, it isn't that this is bad in C++ but the programmer needs to learn how to handle a greater range of detail than in a more abstract language or in a single paradigm language. Learning how to deal with that, and learning the tools that help you do it is valuable.
However, to say that C++ is more efficient than Java is wrong in general, though it may be correct in some situations. Compilers have come a long way in recent years and the efficiency of code is dependent on the quality of the compiler. In particular, if a language must be used at a detail level then the compiler has less opportunity for optimization than if it is used at a more abstract level. If my program describes how to do something it is quite different than if it describes what must be done. In the latter case, the compiler may be better able to come up with the how to than you are. If you describe the how to itself in your program, the compiler may have no option than to plod along with the steps you chose even when there might be a better path to the goal. Functional and Logic languages were once thought inefficient, but they need not be. It was a result of the level of sophistication of translation available at the time.
To conclude, C++ is a good choice to follow Java as it will reveal a level of detail that the Java programmer didn't previously need to contend with. Even if you only use C++ as a better C you will learn a lot.
But learning a language, like Prolog, say, in a completely different family will also teach you things that are quite different, not just deeper, than what you already know - orthogonal dimensions.