My Cart (0)

Customer Service 1-800-221-5528

C++ Programming

Murach’s C++ Programming

by by Mary Delamater and Joel Murach
19 chapters, 774 pages, 328 illustrations
Published September 2018
ISBN 978-1-943872-27-5
Print: $59.50
eBook: $54.50
Print + eBook: $72.00

In the beginning, C++ was a hard language to learn because it required programmers to master low-level techniques to work with memory. Over the years, C++ has evolved to provide higher-level techniques that make it much easier to write effective code. But most C++ books haven’t evolved with the language.

Until now. Now, this book uses modern C++ to get you off to a fast start, and then builds out your coding and OOP skills to the professional level. At that point, it also covers older techniques so you’ll be able to maintain the vast amount of legacy code that’s out there, as well as work with embedded systems that don’t support the newer techniques.

College Instructors

Go to our instructor's site to learn more about this book and its instructor's materials.

 

As a long-time trainer and developer in other programming languages, I thought of C++ as being an ‘unnecessarily’ complex language. Murach has created a C++ book that eased my concerns. They started with app creation that I could do easily, and I firmly believe would be understandable by more novice programmers. I enthusiastically endorse this book for the high-quality learning material it is."

Don Sheehan, Veteran Technical Trainer

  • About this Book
  • Table of Contents
  • FREE Downloads
  • Book FAQs
  • Corrections
  • Reviews

Who this book is for

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++ itself. 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.

And either way, once you’ve used it for self-training, it becomes your ideal on-the-job reference.

How this book turns you into a C++ programmer

To make this book as effective as possible for you, the content is divided into 4 sections:

  • Section 1 presents a practical subset of modern C++ that gets you off to a great start by showing you how to code, test, debug, and deploy C++ programs using an IDE (interactive development environment).
    This section works for both beginners and experienced programmers because it lets you set your own pace. If you’re a beginner, you’ll move slowly and do all the exercises. If you have experience, you’ll move more quickly, skimming through material you already know to focus on skills that are new to you or that you’ve never mastered.
  • Section 2 builds on the subset to present additional C++ skills that programmers use every day. These include working with structures, enumerations, Standard Template Library (STL) containers and algorithms, built-in arrays, C strings, and exceptions.
  • Section 3 shows you how to develop object-oriented programs in C++. This is a critical skillset in today’s world, and it complements the procedural skills you learned in section 1. When you complete this section, you’ll be able to develop programs that combine the best procedural practices with the best object-oriented practices.
  • Section 4 expands your skills to make you an even more valuable programmer. Here, you’ll learn to work with memory and pointers to handle legacy code or embedded systems. You’ll learn to use templates that allow a class to support multiple data types for generic programming. And you’ll learn to develop custom containers and algorithms that work like the containers and algorithms of the STL presented in section 2.

Why you'll learn faster and better with this book

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.

Time-saving design for reading and review

As you page through this book, you’ll see that all of the information is presented in “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.

Programs that illustrate what you’re learning

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 is critical to the learning process... and yet you won’t find programs like ours, that tie all your newfound skills together, in other C++ books.

Short examples you can use on the fly

Of course, this book also presents hundreds of short examples, so it’s easy to find an example that shows what you want to do. 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.

Practice exercises to solidify your skills

Like all our books, this one has exercises at the end of each chapter 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. They 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 much more realistic and satisfying.

What software you need

To code, test, and debug C++ programs, you need to install an IDE and a compiler for C++. You can install those separately, but some C++ IDEs include a compiler.

For example, installing Visual Studio on Windows also installs the Microsoft Visual C++ (MSVC) compiler. Likewise, installing Xcode on macOS also installs the open-source Clang compiler that can be used to compile programs in C++ and related languages. So this book covers those two IDEs. The appendixes show how to install them, and chapter 1 shows how to use them to develop C++ programs…although you can use any other IDE and C++ compiler that you want to.

What people say about Murach books

“I had a development environment up & running within half an hour and was dabbling with code 15 minutes after that!”
 - Andy Bonner, Solutions Architect, New Zealand

“Every two-page spread is designed to have all the detail about a topic on the left hand page and everything that a developer would need for reference material on the right hand page. This is a fantastic approach that I have not seen before in technical books.”
 - Jim O’Neil, Denver Visual Studio .NET

“Another thing I like is the exercises at the end of each chapter. They’re a great way to reinforce the main points of each chapter and force you to get your hands dirty.”
 - Hien Luu, SD Forum/Java SIG

“Great book. I’m hard to please, and as a programmer and engineer, I was surprised by how informative this book was.”
 - Posted at an online bookseller

“Your books are by far the best resource I have come across for aspiring developers like me. Most programming intructional resources teach us fundamentals and concepts of OOP (which is fine), but for people who wish to learn how to develop truly professional applications, Murach bridges the gap.”
 - Blake Biessener, Graduate Student

“I kept your book at my side throughout the entire project. It was indispensable to me. The answers were right there at every turn. All the examples made sense to me, and they all worked!”
 - Alan Vogt, ETL Consultant, Information Builders, Inc.

“You folks make the hard stuff seem easy.”
 - Thomas Finn, Sr. Software Developer, Illinois

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.

Section 1 Essential skills for modern C++

Chapter 1 An introduction to C++ programming

An overview of programming and C++

Four general-purpose programming languages

A brief history of C++

A quick look at C++ development

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 use Visual Studio for Windows development

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 use Xcode for macOS development

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

Chapter 2 How to write your first programs

Basic coding skills

How to code statements

How to code comments

How to code a main() function

How to create identifiers

How to work with numeric variables

How to define and initialize variables

How to code assignment statements

How to code arithmetic expressions

How to use the console for input and output

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 work with the standard library

How to call a function

How to work with the std namespace

The Circle Calculator program

How to generate random numbers

How to work with char and string variables

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 and debug a program

How to test a program

How to debug a program

Chapter 3 How to make decisions

How to get started with if statements

How to use the relational operators

How to code an if statement

How to work with braces

The Invoice 1.0 program

More skills for coding if statements

How to use the logical operators

If statements that use the logical operators

How to code nested if statements

The Invoice 2.0 program

Other ways to make decisions

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

Chapter 4 How to code loops

More skills for coding arithmetic expressions

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 and do-while loops

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 and nested loops

How to code for loops

The Future Value program

How to code nested loops

How to code break and continue statements

How to code break statements

How to code continue statements

The Guess the Number program

Chapter 5 How to work with I/O streams and files

How to work with input streams

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

How to work with output streams

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 work with file streams

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 work with string streams

How to use a string stream to handle unexpected data

The Temperature Analyzer program

Chapter 6 How to work with data types, strings, and vectors

Basic skills for working with data types

The fundamental data types

How to define and initialize variables

How to define and initialize constants

The Light Years Calculator program

More skills for working with data types

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 work with vectors

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 work with strings

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

Chapter 7 How to code functions

How to start coding your own functions

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 plan the functions of a program

How to use a hierarchy chart

The Convert Temperatures program

More skills for coding functions

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 work with header files and namespaces

How to create, implement, and use header files

How to define namespaces

A header for getting input from the console

The Future Value program

Chapter 8 How to test, debug, and deploy a program

Basic skills for testing and debugging

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 use Visual Studio to debug a program

How to set and remove breakpoints

How to step through code

How to inspect variables

How to inspect the stack trace

How to use Xcode to debug a program

How to set and remove breakpoints

How to step through code

How to inspect variables

How to inspect the stack trace

How to deploy and run a program

How to deploy a program

How to run a deployed program

Section 2 More skills as you need them

Chapter 9 How to work with structures and enumerations

Basic skills for working with structures

How to get started with structures

How to initialize a structure

The Movie List 1.0 program

More skills for working with structures

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

How to work with enumerations

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

Chapter 10 How to work with STL containers and iterators

An introduction to STL containers and iterators

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

More skills for working with vectors

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

How to work with arrays

Basic skills for working with arrays

How to pass an array to a function

How to work with lists

An introduction to lists and forward lists

Member functions of a list

The Movie Rankings 2.0 program

How to work with queues and stacks

How to work with queues

How to work with stacks

How to work with sets

Member functions of associative containers

Code examples that work with sets

How to work with maps

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 nested containers

How to work with a vector of vectors

How to work with a map of vectors

Chapter 11 How to work with STL algorithms

An introduction to STL algorithms

The relationship between containers, iterators, and algorithms

How to call an algorithm

How to pass a function as an argument

Basic skills for working with algorithms

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

More skills for working with algorithms

How to use algorithms with intervals of key/value pairs

How to use algorithms with nested containers

More skills for passing functions to algorithms

How to work with function templates

How to work with function objects

How to work with lambda expressions

The Uptime Percentage program

Chapter 12 How to work with built-in arrays and C strings

Basic skills for built-in arrays

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

How to work with C strings

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

Advanced skills for built-in arrays

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

Chapter 13 How to work with exceptions

How to get started with exceptions

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

More skills for working with exceptions

How to catch multiple exceptions

How to rethrow an exception

The Temperature Manager program

How to work with custom exceptions

How exception handling works

Section 3 Object-oriented programming

Chapter 14 How to define classes

An introduction to object-oriented programming

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

More skills for coding member functions

How to work with private member functions

How to convert between numbers and strings

How to define constructors

How to define destructors

How to store a class in header and source files

The header and source files for a Movie class

When and how to use inline functions

The Move List 2.0 program

How to work with UML diagrams

An introduction to UML diagrams

UML diagrams with data types

A Product class that implements a UML diagram

The Product Viewer program

How to work with object composition

A Die class

A Dice class

The Dice Roller program

The Pig Dice game

The console

The code

Chapter 15 How to work with inheritance

How to get started with inheritance

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

More skills for working with inheritance

How to define an abstract class

How to control overriding

How to work with multiple inheritance

How multiple inheritance works

The DayReader superclass

The DayWriter superclass

The DayIO subclass

When to use inheritance

How to use inheritance with custom exceptions

Guidelines for using inheritance

Chapter 16 More skills for object-oriented programming

How to work with static members

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

How to work with a friend function

The FuelTank class

A friend function that works with two classes

How to overload operators

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

Section 4 Skills for legacy and generic programming

Chapter 17 How to work with memory and pointers

An introduction to pointers and memory

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 to use pointers with functions

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

How to use pointers to work with dynamic memory

An overview of the types of storage

How to allocate and deallocate free store memory

How to avoid memory leaks and memory corruption

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

More skills for working with pointers

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

Chapter 18 How to work with templates

How to work with function templates

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 work with class templates

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

Chapter 19 How to code custom containers, iterators and algorithms

How to code a custom container

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 code a custom iterator

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

How to code a custom algorithm

The find_midpoint() algorithm

The Number Cruncher program

Appendixes

Appendix A How to set up Windows for this book

How to install the Visual Studio IDE

How to install the source code for this book

Appendix B How to set up macOS 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

FREE chapters

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.

Chapter 1: An introduction to C++ programming

This chapter is a quick introduction to C++ programming that shows you how to use an interactive development environment (IDE) to develop C++ programs.

Chapter 2: How to write your first 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 (1.8MB) Download Now

Chapter 2 PDF (.7MB) Download Now

Book programs and exercises

This download includes:

  • The source code for the programs in the book
  • The starting source code for the exercises in the book
  • The solutions to the exercises in the book

Appendix A for Windows and appendix B for macOS show how to install and use these files.

Exe file for Windows (1.5Mb) Download Now

Zip file for Windows (1.4Mb) 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!

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!

There are no reviews for this product yet.

To leave a review, please log in to your account.     Log In Here

Our Ironclad Guarantee

You must be satisfied. Try our books for 60 days. They must be the best you've ever used or send them back for a prompt refund. No questions asked!

Contact Murach Books

For orders and customer service:

1-800-221-5528

Weekdays, 8 to 4 Pacific Time

College Instructors

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.