Most texts teach C++ the way it was taught when the language came out 30+ years ago. They start off by presenting low-level techniques for working with memory…an approach that’s frustrating and error-prone for today’s students.
But the language itself has changed and provides higher-level coding techniques today. Plus, today’s IDEs help students with debugging and save them from the trivial syntax errors that can keep them from making steady progress.
So this book takes advantage of modern C++ to help you teach your students more quickly, easily, and effectively than ever…much more satisfying for instructors and students alike. But don’t worry: Once your students have a solid set of coding skills, it covers older techniques, so they’ll also be able to maintain legacy code and work with embedded systems.
You are currently on the Murach site for instructors. To buy this book, please visit our retail site.
Never have I found such a helpful book to learn to program. The format of the book was refreshing.... The examples and exercises are not the trivial examples that I have found in many books; they are examples taken from the real world of business programming. I wish I had a book like this when I was in school. It helps to reduce the learning curve required to learn a new programming language."
To make this book as effective as possible for you, the content is divided into 4 sections.
We’re familiar with the competing C++ books, and we’ve specifically designed this book to help your students learn faster and better than they can with any of them. Here are a few of the ways it does that:
Because today’s programmers typically use IDEs to save time and errors, that’s how we present C++ coding in this book.
The two IDEs we specifically cover are (1) Visual Studio with its Microsoft Visual C++ (MSVC) compiler for Windows and (2) Xcode with the open-source Clang compiler for macOS. The appendixes show how to install the IDEs, and chapter 1 gives a quick tutorial in using them.
However, you can use any IDE you want; the principles will be the same, though the installation and user details will differ. Or, if you don’t want to use an IDE, you can use a text editor and a command line.
“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
“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, including 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, Murach's C++ Programming, and within days I was able to understand all the things I previously could not.”
- Thomas B. Wills
“I needed a crash course in C++ for an advanced class I'm taking, and having already read Murach’s C# and SQL Server books, I picked this one up. 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
“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
“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. It's a great introduction into C++ development.”
- 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 projects
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 read and write 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 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
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 the non-modifying algorithms
How to use the 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 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 use STL algorithms with built-in arrays
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 exceptins
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 convert between numbers and strings
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 Move 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
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 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 to understand complex compound types
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 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
How the source code makes it easier for Xcode projects to store data in files
In contrast to other college publishers, we don’t fill dozens of pages in our books with end-of-chapter activities that may never be used.
Instead, we provide everything you need for an effective course in the instructor’s materials, which you can request from our instructor’s website. Then, you decide which of these materials you want to use.
What follows is a summary of the instructor’s materials for this book; for a detailed description in PDF format, please read the Instructor’s Summary. As we see it, these materials provide everything that you need for running a great course...without the counter-productive busywork of other texts.
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!
To view the corrections for this book in a PDF, just click on this link: View the corrections
Then, if you find any other errors, please email us so we can correct them in the next printing of the book. Thank you!
This is our site for college instructors. To buy Murach books, please visit our retail site.