Se hai gia' conoscenze di programmazione Thinking in Java potrebbe andare bene, ho guardato la versione inglese e devo dire che le spiegazioni si capiscono anche con una conoscenza scolastica della lingua, poi i metodi hanno prototipi tutti in inglese dunque tanto vale!
Conoscenze di programmazione intendo non di java, ma di concetti tipo compilatore, linguaggio a oggetti, ciclo, ricorsione ecc.... che sicuramente avrai con c++!