C++ How to Program: An Objects-Natural Approach, 11/e
How to Program SeriesC++ How to Program: An Objects-Natural Approach, 11/e is a friendly, contemporary, code-intensive, case-study-oriented introduction to C++ — the world’s most popular language for building high-performance business-critical and mission-critical computing systems, such as operating systems, real-time systems, embedded systems, game systems, banking systems, air-traffic-control systems, communications systems and more.
This book is an introductory- through intermediate-level college textbook presentation of the C++20 version of C++ and its associated standard libraries, with a look toward C++23 and C++26. See the following for more details about the book:
Source Code
Not a GitHub user? Download the ZIP file
Preface
View the Preface to learn about the book’s approach and features
Table of Contents
View the full Table of Contents for each chapter’s coverage.
Before You Begin
View the full Table of Contents for each chapter’s coverage.
Features
- Rich coverage of C++20’s “Big Four”: Ranges, Concepts, Modules and Coroutines
- Objects-Natural Approach: Use standard libraries and open-source libraries to build significant applications with minimal code
- Hundreds of real-world, live-code examples
- Modern C++: C++20, 17, 14, 11 and a look to C++23
- Compilers: Visual C++®, GNU® g++, Apple Xcode® Clang, LLVM®/Clang
- Docker: GNU® GCC, LLVM®/Clang
- Fundamentals: Control statements, functions, strings, references, pointers, files, exceptions
- Object-oriented programming: Classes, objects, inheritance, runtime and static polymorphism, operator overloading, copy/move semantics, RAII, smart pointers
- Functional-style programming: C++20 Ranges and Views, lambda expressions
- Generic programming: Templates, C++20 Concepts and metaprogramming
- C++20 Modules: Large-Scale Development
- Concurrent programming: Concurrency, multithreading, parallel algorithms, C++20 Coroutines, coroutines support libraries, C++23 executors
- Future: A look forward to Contracts, range-based parallel algorithms, standard library coroutine support and more
Comments from Recent Editions Reviewers
“A great introduction to object-oriented programming in C++. I wish I’d had it when I was learning the language. The authors build concepts from the ground up, clearly explaining each with just the right amount of detail. Provides helpful tips that are relevant to real problems in the software industry. Engaging exercises that will be both challenging and fun for the student.”
—Gordon Hogenson, Microsoft
“As an instructor, I appreciate the thorough discussion of the C++ language, especially the use of code examples and demonstration of best coding practices. For my consulting work I use the Deitel books as my primary reference.”
—Dean Mathias, Utah State University
“It’s important to learn C++ from a book that covers C++11 and C++14 features accurately and integrates them naturally into working code; the new edition does this well.”
—Danny Kalev, Intel and Former Member of the C++ Standards Committee
“I especially value the code examples and diagrams. Great OOP coverage.”
—Linda M. Krause, Elmhurst College
“The extended coverage of algorithms, pseudocode and UML diagrams sends a strong message about planning and documentation.”
—Chris Aburime, Minnesota State Colleges and Universities System
“The most thorough C++ treatment I’ve seen. Replete with real-world case studies covering the full software development lifecycle. Code examples are extraordinary!”
—Terrell Hull, Senior Software Engineer at Dynamic Internet Solutions
“The most comprehensive and best written textbook for C++ programming that I’ve read. It methodically covers all aspects of object-oriented programming, including encapsulation, inheritance, and polymorphism, and promotes software engineering best practices throughout. It thoroughly explains C++11 and C++14 features using meaningful and easy-to-follow code examples.”
—Chris Aburime, Minnesota State Colleges and Universities System
“The new edition of C++ How To Program is a much-awaited update to a textbook that a much-updated language deserves. It serves as a worthy introduction to C++ through the lens of object-oriented programming, and is sure to leave any beginner with a well-rounded base of knowledge on both C++ and good programming practice.”
—Gašper Ažman, Co-Author, C++ Today: The Beast is Back
“Just when you think you are focused on learning one topic, suddenly you discover you’ve learned more than you expected.”
—Chad Willwerth, University Washington, Tacoma
“An excellent ‘objects first’ coverage of C++ accessible to beginners. The example-driven presentation is enriched by the optional OO design and implementation ATM Case Study that contextualizes the material in a software engineering project.”
—Gavin Osborne, Saskatchewan Institute of Applied Science and Technology
“I love that every line of code is explained and that UML class diagrams are given. I like the structured programming summary. Good visuals for pass-by-value and pass-by-reference. Inheritance examples nicely reinforce the concepts. I love the description of a possible polymorphic video game.”
—Linda M. Krause, Elmhurst College
“It’s great that the text introduces object-oriented programming early—the car analogy was well-thought-out. Meticulous treatment of control structures. The virtual function figure and explanation in the polymorphism chapter is thorough and commendable.”
—Gregory Dai, eBay
“The inheritance chapter is well done. Excellent introduction to polymorphism.”
—David Topham, Ohlone College
“Thorough and detailed coverage of exceptions from an object-oriented point of view.”
—Dean Mathias, Utah State University
“Terrific discussion of pointers—the best I have seen.”
—Anne B. Horton, Lockheed Martin
“Good use of diagrams, especially of the activation call stack and recursive functions.”
—Amar Raheja, California State Polytechnic University, Pomona
“A nice presentation of pseudocode and algorithms. A good balance between practice (i.e., code) and theoretical discussions. Code highlighting is an excellent idea! The logical operators are presented clearly with examples that list the associated traps and pitfalls, and how to avoid them. Includes the best introduction to recursion—a topic which other beginners’ books fail to explain clearly. Covers many important C++ skills such as overloading operators and dynamic memory management. A concise and conclusive account of inheritance. A short and accessible introduction to various C++ features such as std::vector, the sorting algorithms, std::array, exceptions and more. Presents the main features of the Standard Library’s stream I/O without getting too technical on the one hand, or watering down the crucial concepts and features—it’s very good! The topic of file handling and processing is explained very clearly and in many ways is one of the best introductions to C++’s <fstream> library.”
—Danny Kalev, Intel and Former Member of the C++ Standards Committee
“Teaches C++ in a compelling way, weaving basic and advanced concepts in just the right amount for a seamless and natural learning process. Every time I had a question about an example, or noticed you ‘forgot’ to mention something, there it was in the next section. I like how the text emphasizes the importance of style, comments and consistency. You continue stressing code quality versus premature optimizations, which is really important for new programmers—let the compiler worry about performance!”
—Renato Golin, LLVM Compiler Engineer
“A modern, updated introduction to the basic concepts that set the stage for the remainder of the text. Good coverage of flow control and currency calculations. Clear explanations in the functions chapter with good, easy-to-understand examples—the tips along the way are particularly helpful. Great exercises in the arrays chapter—I’m glad you’re covering the array and vector classes before covering pointers and C-style arrays. Clear explanations focused on practical aspects of pointer and array programming.”
—Gordon Hogenson, Microsoft, Author of Foundations of C++/CLI: The Visual C++ Language for .NET 3.5
“A great introduction to thinking about programming, not just language. I love that you made the distinction between parameters and arguments—too many textbooks fail to do that. Nice introduction to the difference between a definition and a declaration—concise, accurate and paves the way for function prototypes later. Introduces functions and their calling conventions quite thoroughly. I love that you introduce std::array before you present pointers and plain arrays. A stellar overview of how polymorphism works—the section on how it’s done is great. A great chapter on direct I/O.”
—Gašper Ažman, A9.com Search Technologies and Co-Author, C++ Today: The Beast is Back
“Gets you into C++ programming quickly with important tips, excellent exercises, loads of insights, gradual progression towards advanced concepts and comprehensive coverage of C++11 and C++14 features. A great tour of C++ for beginners learning an industrial-strength programming language.”
—Dean Michael Berris, Google, Maintainer of cpp-netlib and Former ISO C++ Committee Member
“I liked that the material doesn’t skirt around the complex nature of C++, and instead explains all the aspects of the example programs.”
—Jonathan Wakely, Redhat, ISO C++ Committee Secretary
“The discussions of increment operators, list initialization and floating-point data formatting are excellent. The discussion about stack memory, storage classes and the function-call mechanism is great. Pointers are one of the most intimidating features of C++ so explaining them to beginners is quite a challenge—the book succeeds in presenting this complex topic in an accessible form. The operator overloading chapter builds a convincing, realistic Array class that demonstrates the capabilities of OOD and C++. The discussion of Standard Library containers is excellent, up-to-date, accurate and readable. Code was tested meticulously with three leading, industrial-strength compilers.”
—Danny Kalev, Intel and Former Member of the C++ Standards Committee
“Novices and advanced programmers will find this book an excellent tool for learning C++, with good programming practices and the latest enhancements from C++14. The number and quality of the exercises in the arrays chapter is amazing! I especially liked the Quicksort explanation. The Simpletron project is brilliant. An excellent job explaining operator overloading and conversions, and the exercises are very interesting.”
—José Antonio González Seco, Parliament of Andalusia
“The examples are accessible to CS, IT, software engineering and business students.”
—Thomas J. Borrelli, Rochester Institute of Technology
“I really like the Making a Difference exercises. The dice and card games get students excited.”
—Virginia Bailey, Jackson State U.
“Provides a complete basis of fundamental instruction in all core aspects of C++.”
—Peter DePasquale, The College of New Jersey
“A nice introduction to searching, sorting and Big-O.”
—Robert Myers, Florida State University
“Will get you up and running quickly with the smart pointers and regular expression libraries.”
—Ed Brey, Kohler Co.
“I’m pleased with the use of compound statements with all control statements—it sends a clear message about ‘best practice.’ Excellent coverage of functions, and a good introduction to recursion, with great code examples. Excellent introduction to pointers. The Special Section: Building Your Own Computer exercises are great. A systematic and perfectly paced introduction to software engineering using inheritance with real-world examples.”
—Chris Aburime, Minnesota State Colleges and Universities System
“The Account class example in the intro to classes and objects chapter is interesting and the chapter drives through it nicely, combining design with implementation of both the class and its driver program; the exercises ask the reader to eliminate code repetition from, and add missing features to, the chapter’s examples—I like this approach very much. I like how the control statements discussion explains the design and implementation phases at the same time as it teaches about C++ syntax and behavior—I believe you struck the perfect balance between content and complexity, and managed to convey the ideas clearly and accurately. Excellent coverage of pointer basics without being spooky or introducing quirky pointer magic. Loved the Simpletron Building Your Own Computer simulation exercise! I find the HugeInteger exercise a great one, going back to the discussion about floating point problems in financial cases. Operator overloading is discussed with clarity and completeness. Excellent inheritance chapter!—I like the evolution of the base class with more and more inheritance ‘goodness’ in each new version. Great polymorphism chapter with iterative ‘fixing our failures as we go’ style, which is very educational. I also like the explanation of vtables. The ‘change the world’ exercise is great!—It demonstrates the power of abstract classes in the purest way.”
—Renato Golin, LLVM Compiler Engineer
Share This Page