As frieza says, emacs. But I don't know too much about emacs with C++, I always use it for C.
emacs integrates well with GDB so that you can run a debugger session from within the editor.
I don't run debugger sessions from within my editor much.
I perform my Makes and compiles through the command line.
I'm not a big subscriber to IDEs.
In fact, when using Visual C# or Qt, if you read the forums and such and ask for a specific example like
How do I make a button ...?
You'll see the majority of the answers are direct code and not:
Go to the widget, select it, right mouse click for edit properties ....
Instead they say stuff like:
buttonName->accessMethod = senior
and so forth.
Always helps me to be a better coder when I'm directly involved with the code itself.
Other suggestions like g++ for C++ and gcc for C are on the mark too.
Are you already knowledgeable about C++? If also just starting with programming I'd recommend starting with C and then moving to C++.