
After that, you might look into Rust. I don't have any particular recommendations; there was/is an introductory text online by the original Rust developer I found helpful. Rust is sort of hyped the last few years, but there's good reason for it, and its approach to memory builds well on classic C-like ideas.
http://www.amazon.com/Memory-Programming-Concept-Frantisek-F...
A rather expensive book but stellar reviews. I borrowed it from the library. It's very concise too.
For C++ a lot of people still recommend "Accelerated C++":
http://www.amazon.com/Accelerated-C-Practical-Programming-Ex...
because it teaches you "canonical" C++ instead teaching you "C with classes," which seems to be a common complaint among veteran C++ programmers. It's very readable too.
I'm going to pick up "Writing Great Code":
http://www.amazon.com/Write-Great-Code-Understanding-Machine...
because it explains computer architecture. Once you start programming in C/C++ you are much closer to the metal and having an understanding of the architecture will lead to better choices.
Memory as a Programming Concept in C and C++ by Frenck
The Design and Implementation of the FreeBSD Operating System by McKusick/Neville-Neil
Learning GNU Emacs by Cameron, et al.
Practical Common Lisp by Seibel
The C Programming Language by K&R
The C++ Programming Language Stroustrup
The Design and Analysis of Algorithms by Leviten
Assembly Language Programming for the IBM PC Family by Jones
Essays/Collections:
Hackers & Painters by PG
Surely You're Joking Mr. Feynman by Feynman
What Do You Care What Other People Think by Feynman
The Cathedral & The Bazaar by Raymond
Novels:
The Soul of a New Machine by Kidder
Where Wizards Stay up Late by Hafner