Our Ironclad Guarantee
You must be satisfied. Try our print books for 30 days or our eBooks for 14 days. If they aren't the best you've ever used, you can return the books or cancel the eBooks for a prompt refund. No questions asked!
Despite its reputation, C++ doesn’t have to be hard to learn. With this book, you’ll take advantage of modern C++ features and techniques that make it easier than ever to write effective C++ code. But beyond that, our step-by-step approach breaks the content down into manageable chunks to take you from the basics of programming (including testing and debugging) to best practices for OOP to handling legacy code to working with data structures and algorithms. Download a free sample chapter, and see for yourself!
Go to our instructor's site to learn more about this book and its instructor's materials.
As a beginner, I spent many frustrated months trying to learn C++ using several books. None of them were clear and did not help me reach the level I wanted to achieve. I bought your book, and within days, I was able to understand all the things I previously could not."
This book is for anyone who wants to learn C++.
If C++ is your first programming language, it helps you master all the skills and concepts you need to program in any modern language as you learn C++. If you’re an experienced programmer who wants to add C++ to your resume, it will help you learn C++ faster and better than you’ve ever learned a language before.
Either way, once you’ve used it for self-training, it becomes your ideal on-the-job reference.
To make this book as effective as possible for you, the content is divided into 4 sections:
Like all our books, this one has features that you won’t find in competing books, all designed to help you learn faster and better. Here are a few of those features.
As you page through this book, you’ll see that all of the information is presented in what we call paired pages, with the essential syntax, guidelines, and examples on the right page and the perspective and extra explanation on the left page. This helps you learn faster by reading less...and this is the ideal reference format when you need to refresh your memory about how to do something.
To show you how C++ works, this book presents over 50 complete programs that build from the simple to the complex. We believe that studying the code for complete programs that tie all your newfound skills together is critical to the learning process.
Of course, this book also presents hundreds of short examples for specific coding tasks. So it’s easy to find an example when you need model code or want to see how the code works. Even better, our paired pages make it easier to find the example that you’re looking for than it is with traditional books that embed the examples in the text.
Each chapter ends with exercises that give you hands-on experience in practicing what you’ve learned. They also encourage you to experiment and to apply what you’ve learned in new ways…just as you’ll have to do on the job.
These exercises start from partial programs that provide the boilerplate code, allowing you to focus on the skills you’ve just learned. And they tie a number of skills together instead of having you apply one skill per exercise…an approach that’s both realistic and satisfying.
To code, test, and debug C++ programs, you need to install an IDE and a compiler for C++. The appendixes show how to install two IDE/compiler combinations:
Then, chapter 1 shows how to use these IDEs and compilers to develop C++ programs. (Of course, you can install and use another IDE/compiler combination if you prefer.)
“As a long-time trainer and developer in other programming languages (Visual Basic, C#, JavaScript, among others), I had never really had the opportunity to work in C++. I thought of C++ as being an ‘unnecessarily’ complex language whose abilities wouldn’t help me with the type of applications I needed to create.
“Murach has created a C++ book that eased my concerns. They started with app creation that I could do easily. As the material progressed, it became clear what was unique in C++ and how C++ followed suit with other object-oriented programs that were familiar to me.
“I enthusiastically endorse this book for the high-quality learning material it is.”
- Don Sheehan, Veteran Technical Trainer
“As a beginner in programming, I spent many frustrated months trying to learn C++ programming using several books, Sams Teach Yourself, C++ for Dummies, C++ Without Fear, and both of Bjarne Stroustrup's books. None of them were clear and did not help me to reach the level I wanted to achieve. I bought your book, and within days I was able to understand all the things I previously could not."
- Thomas B. Wills, Retired CPA
“I like the Murach books' format because every even-numbered page has in-depth explanations and every odd-numbered page has code examples and summary, so if you're in a rush or just want to brush up on a topic you can skim through the odd-numbered pages.”
- Posted at an online bookseller
“Murach's book did an excellent job explaining today’s C++, using simple yet meaningful code examples. Just typing and compiling the source code helped a lot to understand key concepts.”
- Posted at an online bookseller
“Each topic is a lesson unto itself, which makes this a book with a very good pace but not at the expense of effective learning. There's a lot of information in this book, but it won't take you a month to go through all the examples.”
- Posted at an online bookseller
“Murach's C++ Programming is a great book for those starting out with C++. It's also good for those who haven't worked with C++ in almost 20 years! I particularly like that the book covers using both Visual Studio and Xcode. Knowing how to effectively use tools to debug is important. Good book!”
- Jeanne Boyarsky, JavaRanch.com
“Currently I am taking an object-oriented C++ course at a local community college, and this book helps tremendously because it is skilled-based, the most important selling point for beginners. I like how the topics are introduced systematically with explanations on the left and codes on the right. The format helps me learn faster and easier as I don't have to flip back and forth. In addition, it covers topics that a normal object-oriented course would cover in a semester's time which complements great with students. Answers are also provided for reference in case students have difficulties completing the exercises.
“Overall this is an excellent self-starter and supplementary material for college classes. Highly recommended.”
- Posted at an online bookseller
View the table of contents for this book in a PDF: Table of Contents (PDF)
Click on any chapter title to display or hide its content.
Four general-purpose programming languages
A brief history of C++
The user interface for a console application
The source code for a console application
How source code compiles to an executable file
Four popular IDEs and compilers
How to open a project and work with source code
How to compile and run a project
How to use code completion and error detection
How to create a new project
How to open a project and work with source code
How to compile and run a project
How to use code completion and error detection
How to create a new project
How to code statements
How to code comments
How to code a main() function
How to create identifiers
How to define and initialize variables
How to code assignment statements
How to code arithmetic expressions
How to include header files
How to write output to the console
How to read input from the console
The Gallons to Liters program
How to call a function
How to work with the std namespace
The Circle Calculator program
How to generate random numbers
How to assign values to char and string variables
How to work with special characters
How to read strings and chars from the console
How to fix a common problem with reading strings
The Guest Book program
How to test a program
How to debug a program
How to use the relational operators
How to code an if statement
How to work with braces
The Invoice 1.0 program
How to use the logical operators
If statements that use the logical operators
How to code nested if statements
The Invoice 2.0 program
How to use the conditional operator
How to code switch statements
More examples of switch statements
A switch statement for the Invoice 2.0 program
How to use arithmetic unary operators
How to use the compound assignment operators
How to work with the order of precedence
How to code while loops
More examples of while loops
How to code do-while loops
The Test Scores program
How to code for loops
The Future Value program
How to code nested loops
How to code break statements
How to code continue statements
The Guess the Number program
An introduction to streams and buffers
How unexpected input can cause problems
How to discard data from an input stream
How to detect data input errors
How to handle data input errors
An introduction to stream manipulators
How to specify the width of a column
How to right or left justify columns
How to format floating-point numbers
The Invoice 3.0 program
How to read and write a file
How to append data to a file
How to use the fstream object to work with files
How to check for errors when working with files
How to write delimited data
How to read delimited data
The Temperature Manager program
How to use a string stream to handle unexpected data
The Temperature Analyzer program
The fundamental data types
How to define and initialize variables
How to define and initialize constants
The Light Years Calculator program
How to work with type conversion
How to convert between numbers and strings
How to work with data type sizes and limits
How to fix problems with floating-point data
How to create a vector and refer to its elements
How to initialize and loop through a vector
How to use member functions of a vector
The Test Scores program
The Temperature Manager program
How to create and loop through a string
How to use basic member functions of a string
How to search a string
How to work with substrings
How to modify a string
How to check characters within a string
The Create Account program
The Word Jumble program
How to define and call a function
The Miles Per Gallon program
How to declare a function
When and how to use local and global variables
How to use a hierarchy chart
The Convert Temperatures program
How to use default values for arguments
How to overload a function
How to use reference variables as parameters
How to use reference parameters to improve efficiency
The Temperature Manager program
How to create, implement, and use header files
How to define namespaces
A header for getting input from the console
The Future Value program
Typical test phases
The three types of errors
Common C++ errors
How to plan the test runs
A simple way to trace code execution
How to set and remove breakpoints
How to step through code
How to inspect variables
How to inspect the stack trace
How to set and remove breakpoints
How to step through code
How to inspect variables
How to inspect the stack trace
How to deploy a program
How to run a deployed program
How to get started with structures
How to initialize a structure
The Movie List 1.0 program
How to nest structures
How to use structures with functions
How to compare structures for equality
How to work with member functions
How to work with member operators
The Movie List 2.0 program
Basic skills for working with scoped enumerations
More skills for working with scoped enumerations
How to work with unscoped enumerations
The Monthly Bonus Calculator program
How to create an array and access its elements
How to initialize an array
How to loop through an array
How to pass an array to a function
How to compare and copy arrays
The Test Scores program
An introduction to C strings
How to use C strings with input streams
Some utility functions for working with C strings
How to loop through a C string
The Create Account program
How to search an array
How to sort an array
How to work with a two-dimensional array
How to pass a two-dimensional array to a function
The Top Five program
A function that doesn’t use exceptions
How to throw an exception
How to catch an exception
A program that catches exceptions
A program that prevents exceptions from being thrown
How to catch multiple exceptions
How to rethrow an exception
The Temperature Manager program
How to work with custom exceptions
How exception handling works
A Movie structure that doesn’t provide encapsulation
A Movie class that provides encapsulation
How to define private data members
How to define getter and setter functions
The Movie List 1.0 program
How to work with private member functions
How to overload a setter function
How to define constructors
How to define destructors
The header and source files for a Movie class
When and how to use inline functions
The Movie List 2.0 program
An introduction to UML diagrams
UML diagrams with data types
A Product class that implements a UML diagram
The Product Viewer program
A Die class
A Dice class
The Dice Roller program
The console
The code
How inheritance works
How to define a superclass
How to define a subclass
How to define another subclass
How polymorphism works
The Product Viewer program
How to define an abstract class
How to control overriding
How multiple inheritance works
The DayReader superclass
The DayWriter superclass
The DayIO subclass
Code that uses the DayIO subclass
How to use inheritance with custom exceptions
Guidelines for using inheritance
How to code static data members and functions
How to access static data members and functions
The Console class
Code that uses the Console class
The FuelTank class
A friend function that works with two classes
How to overload arithmetic binary operators
How to overload arithmetic unary operators
How to overload relational operators
How to overload the insertion and extraction operators
How to work with a module that exports a function
How to work with a module that exports namespaces
How to work with a module that exports classes
How to use the export keyword for access control
How to use the import keyword
A summary of STL containers
A summary of STL iterators
Basic skills for working with iterators
Member functions shared by the STL containers
How to iterate the data in a container
Member functions shared by the sequence containers
Member functions of a vector
How to set capacity to improve efficiency
The Movie Rankings 1.0 program
Basic skills for working with arrays
How to pass an array to a function
An introduction to lists and forward lists
Member functions of a list
The Movie Rankings 2.0 program
How to work with queues
How to work with stacks
Member functions of associative containers
Code examples that work with sets
Member functions and operators of a map
How to insert key/value pairs and work with values by key
The Word Counter program
How to work with a vector of vectors
How to work with a map of vectors
The relationship between containers, iterators, and algorithms
How to call an algorithm
How to pass a function as an argument
How to use non-modifying algorithms
How to use modifying algorithms
How to use the min and max algorithms
How to use the numeric algorithms
How to use the sort and binary search algorithms
The Number Cruncher program
How to use algorithms with intervals of key/value pairs
How to use algorithms with nested containers
How to work with function templates
How to work with function objects
How to work with lambda expressions
The Uptime Percentage program
How physical memory works
How to define and use pointers
More skills for defining and using pointers
How pointer variables compare to reference variables
How and when to pass pointers to functions
How to use the this pointer in a member function
The Step Counter 1.0 program
The Step Counter 2.0 program
An overview of the types of storage
How to allocate and deallocate free store memory
How to use RAII (Resource Acquisition Is Instantiation)
How to implement the Rule of Three with RAII
How to implement the Rule of Five with RAII
How to work with smart pointers
The Sensor Analysis program
How to compare pointers
How to use pointer arithmetic
How to work with void pointers
How to use pointers with inheritance
How complex compound types work
An overloaded function
A function template
How to code a function template with one type parameter
How to code a function template with multiple type parameters
How to code a simple class template
How to code a more complex class template
How to use a complex class template
How to code a function template that works with a class template
The Sensor Analysis program
How to work with member types
The MyVector class declaration
The constructor and destructor definitions
The assignment operator definitions
The member function definitions
The Task Manager 1.0 program
How to work with iterator traits
The Link structure
The MyIterator class
The MyList class declaration
The destructor definition
The member function definitions
The Task Manager 2.0 program
The find_midpoint() algorithm
The Number Cruncher program
How to install the Visual Studio IDE
How to install the source code for this book
How to install the Xcode IDE
How to install the source code for this book
To see how well this book works for both new and experienced programmers, you can download its first two chapters in PDF format. By the end, you’ll be writing your first modern C++ programs.
This chapter is a quick introduction to C++ programming that shows you how to use an interactive development environment (IDE) to develop C++ programs.
This chapter presents a starting subset of modern C++ skills that lets you write your first programs. And we’re not talking about a few lines of “Hello World” code, but complete programs that get input from the user, process it, and display output.
Chapter 1 PDF Download Now
Chapter 2 PDF Download Now
This download includes:
Appendix A (Windows) and appendix B (macOS) show how to install these files.
Zip file for any system Download Now
On this page, we’ll be posting answers to the questions that come up most often about our C++ book. So if you have any questions that you haven’t found answered here at our site, please email us. Thanks!
While we strive to make sure our books are as error-free as possible, we are aware that typos may creep in. So if you find any errors, we want to know. Please email us, and corrections that affect the technical accuracy of the book will be posted here. Thank you!
For orders and customer service:
1-800-221-5528
Weekdays, 8 to 4 Pacific Time
If you're a college instructor who would like to consider a book for a course, please visit our website for instructors to learn how to get a complimentary review copy and the full set of instructional materials.