Thinking in C++, Volume 1