Chapter 5: Hiding the Implementation. You can decide that some of the data and functions in your
structure are unavailable to the user of the new type by making them private. This means that you can
separate the underlying implementation from the interface that the client programmer sees, and thus
allow that implementation to be easily changed without affecting client code. The keyword class is also
introduced as a fancier way to describe a new data type, and the meaning of the word “object” is
demystified (it’s a fancy variable).
Chapter 6: Initialization and Cleanup. One of the most common C errors results from uninitialized
variables. The constructor in C++ allows you to guarantee that variables of your new data type (“objects
of your class”) will always be initialized properly. If your objects also require some sort of cleanup, you
can guarantee that this cleanup will always happen with the C++ destructor.
Chapter 7: Function Overloading and Default Arguments. C++ is intended to help you build big,
complex projects. While doing this, you may bring in multiple libraries that use the same function name,
and you may also choose to use the same name with different meanings within a single library. C++
makes this easy with function overloading, which allows you to reuse the same function name as long as
the argument lists are different. Default arguments allow you to call the same function in different ways
by automatically providing default values for some of your arguments.
Chapter 8: Constants. This chapter covers the const and volatile keywords, which have additional
meaning in C++, especially inside classes. You’ll learn what it means to apply const to a pointer
definition. The chapter also shows how the meaning of const varies when used inside and outside of
classes and how to create compile-time constants inside classes.
Chapter 9: Inline Functions. Preprocessor macros eliminate function call overhead, but the
preprocessor also eliminates valuable C++ type checking. The inline function gives you all the benefits of
a preprocessor macro plus all of the benefits of a real function call. This chapter thoroughly explores the
implementation and use of inline functions.
Chapter 10: Name Control. Creating names is a fundamental activity in programming, and when a
project gets large, the number of names can be overwhelming. C++ allows you a great deal of control over
names in terms of their creation, visibility, placement of storage, and linkage. This chapter shows how
names are controlled in C++ using two techniques. First, the static keyword is used to control visibility
and linkage, and its special meaning with classes is explored. A far more useful technique for controlling
names at the global scope is C++’s namespace feature, which allows you to break up the global name
space into distinct regions.
Chapter 11: References and the Copy-Constructor. C++ pointers work like C pointers with the
additional benefit of stronger C++ type checking. C++ also provides an additional way to handle
addresses: from Algol and Pascal, C++ lifts the reference, which lets the compiler handle the address
manipulation while you use ordinary notation. You’ll also meet the copy-constructor, which controls the
way objects are passed into and out of functions by value. Finally, the C++ pointer-to-member is
illuminated.
Chapter 12: Operator Overloading. This feature is sometimes called “syntactic sugar;” it lets you
sweeten the syntax for using your type by allowing operators as well as function calls. In this chapter
you’ll learn that operator overloading is just a different type of function call and you’ll learn how to write
your own, dealing with the sometimes-confusing uses of arguments, return types, and the decision of
whether to make an operator a member or friend.
Chapter 13: Dynamic Object Creation. How many planes will an air-traffic system need to manage?
How many shapes will a CAD system require? In the general programming problem, you can’t know the
quantity, lifetime, or type of objects needed by your running program. In this chapter, you’ll learn how
C++’s new and delete elegantly solve this problem by safely creating objects on the heap. You’ll also see
how new and delete can be overloaded in a variety of ways so you can control how storage is allocated