Advanced C++ Development Techniques

Course

Online

Price on request

Description

  • Type

    Course

  • Methodology

    Online

C++ is the standard language for implementing object-oriented designs, but although based on C, C++ introduces many subtle syntactic and design issues. For developers whose C++ experience goes back further, many of the changes as a result of standardisation make standard C++ a very different programming environment.

Questions & Answers

Add your question

Our advisors and other users will be able to reply to you

Who would you like to address this question to?

Fill in your details to get a reply

We will only publish your name and question

Reviews

Subjects

  • C++
  • IT
  • IT Development

Course programme

Evolution of Standard C++

  • ISO C++
  • Changes to the core language
  • Overview of the standard library

C++ and OO Refresher

  • Abstraction and encapsulation
  • Composition and association
  • Inheritance and polymorphism
  • Patterns and idioms

Copying and Conversions

  • The staticcast, dynamiccast, constcast and reinterpretcast keyword casts
  • Logical vs physical const-ness and the mutable keyword
  • Converting constructors and the explicit keyword
  • User defined conversion operators
  • Copy construction and assignment

Scope

  • Static class members
  • The Singleton pattern
  • Nested classes
  • Nested class forward declarations
  • The Cheshire Cat idiom
  • Namespaces

Delegation Techniques

  • The Object Adapter pattern
  • The Null Object Pattern
  • The Proxy pattern
  • Overloading the member access operator
  • Smart pointers
  • The Template Method pattern
  • Factory objects

Subscripting Techniques

  • Overloading the subscript operator
  • Overloading with respect to const-ness
  • Smart references
  • Multi-dimensional subscripting
  • Associative containers

Template Functions

  • Using and implementing generic algorithms with template functions
  • Overloading and specialising template functions
  • Template instantiation and linkage

Template Classes

  • Using and implementing generic types with templates classes
  • Multiple template parameters
  • The standard vector, list, pair, and map template classes

Iterators and Algorithms

  • The need for Iterators
  • The standard library (STL) iterator model
  • Generic algorithms using iterators
  • STL algorithm pitfalls
  • Introduction to function objects

Exception Handling

  • Classifying and handling exceptions
  • Catching and throwing exceptions
  • The standard exception class hierarchy
  • Uncaught exceptions
  • Strategies for handling exceptions

Exception Safety

  • Resource acquisition idioms for exception safety
  • Exceptions in constructors
  • Exceptions in destructors
  • Exception safe classes
  • STL exception safety guarantees

Memory Management

  • Object life cycle
  • Allocation failure
  • Customising memory allocation
  • Optimising allocation for a class through caching
  • Derivation safe allocation
  • Controlling timing of construction and destruction

Reference Counting

  • Reference counting shared representation
  • Reference counted strings for copy optimisation
  • Subscripting issues
  • Smart pointers for simple, automatic garbage collection

Inheritance Techniques

  • Subtyping vs subclassing
  • Abstract and concrete base classes
  • Inheritance scoping issues
  • Multiple inheritance
  • Virtual base classes
  • Interface classes
  • Mixin classes
  • Runtime type information (RTTI)
  • Private and protected inheritance
  • The Class Adapter pattern

Template Techniques

  • Templating on precision
  • Template adapters
  • Default template parameters
  • Template specialisation
  • Trait classes
  • Member templates
  • Non-type template parameters
  • Optimising template code space

Functional Abstraction

  • Traditional callbacks using function pointers
  • The Command pattern
  • More on function objects
  • Member function pointers

Advanced C++ Development Techniques

Price on request