The C++ Annotations offers an extensive tutorial about
the C++ programming language. It can be used as a textbook for C++
programming courses. The C++ Annotations is intended for knowledgeable
users of C or a language that uses a C-like grammar.
Chapters include:
Name Spaces
Strings - C offers rudimentary string support
IO-stream Library - offers an input/output (I/O)
library based on class concepts
Classes - C offers two methods for
structuring data of different types. The C struct holds data members of
various types, and the C union also defines data members of various
types. This chapter introduces classes, a kind of struct but its
contents are by default inaccessible to the outside world
Static Data and Functions
Memory Management - examines the operators that
handle memory allocation in C++
Exceptions - allow C++ programs to perform a
controlled non-local return, without the disadvantages of longjmp and
setjmp
Operator Overloading - takes a look at operator
overloading in general
Abstract Containers
Inheritance - another term for derivation.
The chapter shows that base class pointers may be used
to point to derived class objects
Polymorphism - a special form of inheritance
Friends - introduces the friend keyword and the
principles that underly its use
Pointers to Members - defining pointers to members,
using pointers to members, pointers to static members, and pointer sizes
Nested Classes - used in situations where the nested
class has a close conceptual relationship to its surrounding class
Standard Template Library (STL) - a general
purpose library consisting of containers, generic algorithms,
iterators, function objects, allocators, adaptors and data structures.
The data structures used by the algorithms are abstract in the sense
that the algorithms can be used with (practically) any data type
Generic Algorithms - cover the STL's generic
algorithms
Function Templates - explores the syntactic
peculiarities of templates. The notions of template type
parameter, template non-type parameter, and function template are
introduced and several examples of templates are provided
Class Templates - constructing and using
class templates is discussed
Advanced Template Use - following a short overview of
subtleties related to templates the main characteristics of template
meta programming are introduced
Optimizing C++ explains and illustrates a series of
algorithms that can dramatically improve the efficiency of many C++
programs.
Chapters cover the topics of data compression; dynamic
hashing and caching; stripfiles, bitmaps and arithmetic coding. Among
the book's powerful algorithms, the author presents a little-known
sorting algorithm that can dramatically increase the sort performance
of large databases.
Additionally, the author presents an advanced hashing
algorithm that dynamically resizes its capacity
The book presents many real-life
examples based on practical experience, and it is written to be
"programmer-friendly," with no unexplained jargon.
The book pays attention to:
Advanced dynamic hashing and caching algorithms
Bitmaps and other data compression techniques
Fast-sorting algorithms that use memory efficiently
An Introduction to GCC provides an introduction to the
GNU C and C++ Compilers, gcc and g++, which are part of the GNU
Compiler Collection (GCC).
This book explains how to use the compiler itself. Based
on years of observation of questions posted on mailing
lists, it guides the reader straight to the important options of GCC.
Chapters:
Introduction
Compiling a C program - describes how to
compile C programs using gcc. Programs can be compiled from a single
source file or from multiple source files, and may use system libraries
and header files
Compilation options - describes other
commonly-used compiler options available in
GCC. These options control features such as the search paths used for
locating libraries and include files, the use of additional warnings
and diagnostics, preprocessor macros and C language dialects
Using the preprocessor - describes the use
of the GNU C preprocessor cpp, which is part of the GCC package. The
preprocessor expands macros in source files before they are compiled.
It is automatically called whenever GCC processes a C or C++ program
Compiling for debugging - provides the -g
debug option to store additional debugging information in object files
and executables. This debugging information allows errors to be traced
back from a specific machine instruction to the corresponding line in
the original source file
Compiling with optimization - GCC is an
optimizing compiler. It provides a wide range of
options which aim to increase the speed, or reduce the size, of the
executable files it generates
Compiling a C++ program - describes how to
use GCC to compile programs written in C++, and the command-line
options specific to that language
Platform-specific options - describes some of
the options available for common platforms: Intel and AMD x86 options,
x86 extensions, x86 64-bit processors, DEC Alpha options, SPARC
options, POWER/PowerPC
options, Multi-architecture support, and floating-point issues
Troubleshooting - GCC provides several help
and diagnostic options to help troubleshoot problems with the
compilation process
Compiler-related tools - describes a number
of tools which are useful in combination with GCC. These include the
GNU archiver ar, for creating libraries,
and the GNU profiling and coverage testing programs,
gprof and gcov
How the compiler works - describes in more
detail how GCC transforms source files to
an executable file. Compilation is a multi-stage process involving
several tools, including the GNU Compiler itself (through the gcc
or g++ frontends), the GNU Assembler as, and the GNU
Linker ld. The complete set of tools used in the compilation
process is referred to as a toolchain
Examining compiled files - describes several
useful tools for examining the contents of executable files and object
files
Common error messages - describes the most
frequent error and warning messages
produced by gcc and g++. Each case is accompanied by a
description of the causes, an example and suggestions of possible
solutions
Getting help - if readers encounters a problem not
covered by this introduction, there are several
reference manuals which describe GCC and language-related topics in
more detail