Sam osobiście kończę lekturę Thinking in C++, i co moge powiedzieć:
Zacznijmy od wad:
na pewno co do jednego zgadzam się z
Josh'em - książka jest napisana w taki sposób, że nie raz można złapać porządną migrenę i czytać jeden fragment nawet kilka razy zanim wszystko stanie się jasne. Książka nie uczy podstaw języka C++ - o ważnych zagdanieniach z poziomu podstawowego autor wspomina ogólnikowo - z góry założył, że jesteś doświadczonym (ba!, nawet zawodowym) programistą z ogromnym (no, conajmniej dużym) doświadczeniem w C lub innym języku proceduralnym. Jeszcze może jeden mały mankament według mnie: autor (pewnie przez założenie o którym wspomnialem wyzej) potrafi walnąć przykład żywcem wyjęty z C po którym pomyślisz 'przesadziłeś dziadu!' i zaczniesz analizować go pół dnia, żeby pare stron dalej dowiedzieć się, że w C++ można to zrobić 5x łatwiej i nie warto w ogóle sobie poprzednim przykładem głowy zawracać.
Ufff, wreszcie zrzuciłem co mi na wątrobie leżało

Teraz wreszcie czas na pare zalet:
Autor (jeśli naprawdę znasz podstawy - wiedza z kursa Marcina wystarczy) krok po kroku wgłębia nas w tajniki programowania obiektowego - poznajemy zastosowanie klas i zaimplementowanych w nich metod, specyfikatorów dostępu itd. Z pewnością, nie można mu zarzucić tego co przy podstawach - uogólniania. Bardzo dokładnie przeprowadza przez kolejne etapy OOP ilustrując to masą przykładów i powoli przekierunkowywując nasz tok rozwiązywania problemów na obiektowy.
Ale się rozpisałem, aż sam się zdziwiłem
Jakby komuś się nie chciało czytać tego monologu krótka puenta:
jeśli znasz podstawy, jesteś ambitny i naprawdę chcesz poznać to co czyni C++ tak popularnym - programowanie obiektowe zachęcam do Thinking in C++

Perfection is not enough.
'Nic nie jest trudne, za to wiele rzeczy jest nudnych'