No, there are smart pointers or even garbage collector implementations for C++. It's not really about avoiding memory leaks. However, good luck maintaining millions of lines of code projects, where a leak can occur. The fact that language lets you make such a leak easily is a big problem.
This language was made in a way it should always stay compatible with C, hence many of language mechanisms are fucking horrible to read. Like abstract classes - why use "abstract" keyword, when you can make a method equal 0 instead XD. C++ fanatics will keep telling this code is readable, but no, it's not.
Besides, c++ is a garbage bin of programming languages. Every possible mechanism and construction was put into it, it's too flexible. Mastering this language takes decades. This is not how a language should be.