Overview
This course provides practical advice on how to get the most out of the C++ language, examining everything from useful idioms and common bear-traps to template programming and the standard library. A lot of emphasis is placed on those parts of the language that we feel bring most value on a day-to-day basis.
Outline
Introduction
- Back to basics
- Understanding the compiler
- Storage classes in depth
- Stacks and heaps
- Values, references and pointers
- Common pitfalls
- Constructors and destructors
- Virtual functions and V-tables
- Minimising compiler dependencies
- Idioms – Pimpl, Copy-On-Write
Namespaces
- Namespaces (and how to use them)
- The using keyword
- Unnamed namespaces
Exceptions
- Error handling
- Exception safety
- Resource acquisition is initialization
- std::auto_ptr
Templates
- Function templates
- Template classes
- Full and partial specialisation
- Policy-based programming
- Compile time assertions
The Standard Library
- Strings
- Streams
- Standard Template Library
- Programming with vectors, lists, sets and maps
Miscellaneous
- Smart pointers
- The Boost Library
- Practicable design patterns
Requirements
This course is suitable only for developers with previous C++ experience