Fully revised and beefed up with plenty of new material on today's Standard C++, the new edition of Bruce Eckel's Thinking in Volume I is an excellent tutorial to mastering this rich (and sometimes daunting) programming language, filled with expert advice and written in a patient, knowledgeable style. The effective presentation, along with dozens of helpful code examples, make this book a standout. The text first sets the stage for using C++ with a tour of what object-oriented programming is all about, as well as the software design life cycle. The author then delves into every aspect of C++, from basic keywords and programming principles to more advanced topics, like function and operator overloading, virtual inheritance, exception handling, namespaces, and templates. C++ is a complex language, and the author covers a lot of ground using today's Standard C++, but without getting bogged down in excessive detail. The emphasis here is on practical programming, so there's basic advice on using header files, preprocessor directives, and namespaces to organize code effectively. Each chapter ends with exercises (usually about two dozen), and the entire text of the book is available on the accompanying CD-ROM. (So is the second volume, which tours Standard C++ classes and other advanced topics.) Whether you have read the first edition of this book or not, there is much to mine from Thinking in C++ . This new version continues to set a high standard as an approachable and thorough tutorial. --Richard Dragan Topics covered : Introduction to objects, inheritance, composition, polymorphism, exception handling, analysis and design fundamentals, advantages of C++, transitioning from C, compiling and building programs, writing C++ functions, flow control, C++ operators, data types, casting, debugging tips, pointers to functions, designing reusable C++ classes, conditional compilation and header files, access specifiers, constructors and destructors, function overloading and default arguments, using const and static effectively, inlining, namespaces, references, copy constructors, operator overloading, using new and delete for dynamic objects, virtual functions, abstract classes, introduction to templates, and iterators.
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.