In the first edition of Thinking in C++ , Bruce Eckel synthesized years of C++ teaching and programming experience into a beautifully structured course in making the most of the language. It became an instant classic, winning the 1995 Software Development Jolt Cola Award for best book of the year. Now, Eckel has thoroughly rewritten Thinking in C++ to reflect the final ANSI/ISO C++ standard. Every page has been revisited and rethought, with many new examples and exercises -- all designed to help you understand C++ "down to the bare metal," so you can solve virtually any problem. Eckel starts with a detailed look at objects, showing how C++ programs can be constructed from off-the-shelf object libraries. This edition includes a new, chapter-length overview of the C features that are used in C++ -- plus a new CD-ROM containing an outstanding C seminar that covers all the foundations developers need before they can truly take advantage of C++. Eckel then walks through initialization and cleanup; function overloading and default arguments; constants; inline functions; name control; references and the copy constructor; operator overloading; and more. There are chapters on dynamic object creation; inheritance and composition; polymorphism and virtual functions, and templates. (Bonus coverage of string, templates, and the Standard Template Library, can be found at Eckel's web site.) Every chapter contains many modular, to-the-point examples, plus exercises based on Eckel's extensive experience teaching C++ seminars. Put simply, Eckel has made an outstanding book on C++ even better.
Bruce Eckel is a computer programmer, author, and consultant. Eckel's best known works are Thinking in Java and the two-volume series Thinking in C++, aimed at programmers wanting to learn the Java or C++ programming languages, respectively, particularly those with little experience of object-oriented programming. Eckel was a founding member of the ANSI/ISO C++ standard committee.
This is not a bad place to start if you are just now learning C++, or if you need to brush up after a long time away from the language. The book begins with some general observations about programming and object-oriented programming, moves on to a review of C, and then begins a detailed and somewhat slow-paced walk through C++, starting with Hello World, and ending with templates.
Eckel has a good discussion of static initializers and their pitfalls, and proposes a novel way of working around the problem of static initialization dependencies. It is this thoroughness that really impressed me about this book.
Bruce Eckel, Thinking in C++ vol. I (Prentice Hall, 2000)
This is what so many other books about the process of programming C++ could have been. Eckel uses the most up-to- date C++ standards, the strictest programming techniques, and takes enough time to explain both the how and the why of the things that he's talking about in enough detail that the user, while perhaps needing to read certain sections two or three times to really get the gist of them, should have a thorough understanding of the subject by the time the reader has finished the section. This leads to a complete absence of the usual "here's what to do, don't worry about why you're doing it until we get to chapter X" found in most programming books. It also stresses programmers developing their own programming style, but imposes the strictures called for by the ANSI C++ standard. Sometimes too much freedom IS a bad thing, and that's the case with the vast majority of books on C++ programming. Individuality is important, but clarity of code is important, too.
The book has few shortcomings. The section on namespaces could be a little clearer considering a number of the prospective readers of this book are less familiar with them than they are with most of the other concepts covered here, for example. But the shortcomings are few and far between.
The most important thing about the book, though, is that Eckel uses the book's style and presentation as a physical model of abstraction, the most important move any programmer makes from a procedural language to an object-oriented language. The astute reader will pick up from Eckel's discussions of the philosophy of programming an understanding that not everything is about code, and that code is not the be-all and end-all of the programmer's job. A lot of it, especially in the design stages, is concept. Many of us in today's workforce, especially those who have spent whole careers doing nothing other than modifying existing code, forget that all too often. We're stuck in reactive environments, where the company believes that keeping things running is more important than improving them. A grounding in the design concepts presented here may allow more adept programmers to turn a reactive situation into a proactive one--being able to keep things running at the same time they're being made better. And that's how it should be. ****
A very useful introduction of C++ prime features and object oriented methodology. Also useful as a reference when I feel uncertain about the behavior of the compiler in later practice. Easy to understand to a beginner and a lot of interesting details for digging further.
Although I know it might not be the essential feature of C++ language, I really wish to see more up-to-date features of C++ libraries and applications, like socket connection, and maybe also brief introduction of graphic programming frameworks.
Dacă vrei să înveţi limbajul C++, această carte e un început bun. Se începe aşa cum se începe şi la limbajul C. Doar C++ este un supraset al limbajului C. Dar, C++ continuă cu OOP (orientată pe obiect, are clase), iar C nu are clase. Sunt explicate particularităţile acestui limbaj. Partea OOP e mai bogată. E necesar de antrenat bine la fiecare capitol, pentru că C++ este un limbaj mai complicat decât Java şi C#.
It introduces the logic of c++ and syntax at the same time, therefore a good book. But the template section is hard to understand for me, therefore I recommend Stroustrup's book once you hit the template section, his book is easier to understand as it is more logical and thorough.
Hands down the most in-depth comprehensive introduction to C++ that I've ever encountered. Even though the 2nd edition is Copyright 2000, it stands the test of time by providing the cornerstone knowledge of C++ as well as a chapter-by-chapter perspective for a programmer to understand how new additions to the C++ language improve upon Standard C or provide new features, such as classes themselves, which completely re-invent the way that programs are written for simplicity and efficiency.