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