# C++ Programming

This book covers the C++ programming language, its interactions with software design and real life use of the language. It is presented in a series of chapters as an introductory prior to advance courses but can also be used as a reference book. This is an open work; if you find any problems with terms or concepts you can help by contributing to it; your participation is needed and welcomed! You are also welcomed to state any preference, shortcomings, vision for the actual book content, structure or other conceptual matters; see this Wikibook's discussion page for the right forum for participating.
A complete printable version of C++ Programming is available. (attention to its size)

### Chapter 1 : C++ a multi-paradigm language [ print chapter ]

* Introducing C++
* Programming languages
** Programming paradigms - the versatility of C++ as a multi-paradigm language, concepts of object-oriented programming (objects and classes, inheritance, polymorphism).
* Comparisons - to other languages, relation to other computer science constructs and idioms.
** with C
** with Java
** with C#
** with Managed C++ (C++/CLI)
** with D

### Chapter 2 : Fundamentals for getting started [ print chapter ]

* The code - includes list of recognized keywords.
** File organization
** Statements
** Coding style conventions
** Documentation
** Scope and namespaces
* Compiler
** Preprocessor - includes the standard headers.
** Linker
* Variables and storage - locality, scope and visibility, including source examples.
** Type
* Operators - precedence order and composition, , assignment, sizeof, new, delete, (arrays), * (pointers) and & (references).
** Logical operators - the && (and), || (or), and ! (not).
** Conditional operator - the ?:
* Type casting - Automatic, explicit and advanced type casts.
* Flow of control - Conditionals (if, if-else, switch), loop iterations (while, do-while, for) and goto.
* Functions - Introduction (including main), argument passing, returning values, recursive functions, pointers to functions and function overloading.
** Standard C Library - I/O, string and character, math, time and date, memory and other standard C functions
* Debugging - Finding, fixing, preventing bugs and using debugging tools.

### Chapter 3 : Object-Oriented Programming [ print chapter ]

* Structures
* Unions
* Classes (Inheritance, Member Functions, Polymorphism and this pointer)
** Abstract Classes including Pure abstract classes (abstract types)
** Nice Class
* Operator overloading
* Standard Input/Output streams Library
** string

### Chapter 4 : Advanced Features [ print chapter ]

* Templates
** Template Meta-Programming (TMP)
* Standard Template Library (STL)
* Smart Pointers
* Exception Handling
* Run-Time Type Information (RTTI)

### Chapter 5 : Beyond the Standard [ print chapter ]

* Resource Acquisition Is Initialization (RAII)
* Garbage Collection (GC)
* Design patterns - Creational, Structural and Behavioral patterns.
* Libraries - APIs vs Frameworks and Static and dynamic libraries.
* Boost library
* Optimizing your programs
* Cross-platform development
** Win32 (aka WinAPI) - including Win32 wrappers.
** Cross-platform wrappers
** Multitasking
* Software internationalization
** Text encoding
* Unified Modeling Language (UML)

### Appendix A: References Tables (used on book chapters, print version excludes the Appendix)

* Keywords • Preprocessors Directives • Standard Headers • Data Types • Operators • Standard C Library Functions • ASCII chart

### Appendix B: External References

* Weblinks • Books