Advanced C++ Development

5 Day Course
Code QACPPADV

Book Now - 1 Delivery Method Available:

Classroom Virtual Classroom Private Group - Virtual Self-Paced Online

Overview

This course will keep the audience abreast of these changes. It covers four main areas: new and advanced language features; using the standard library; implementing object-oriented concepts and patterns in C++; effective C++ programming techniques and idioms. It also suggests ways to maximise efficiency, code quality, and reusability. Delegates will gain a greater understanding of the capabilities and potential pitfalls of the C++ language and will be more able to use C++ language features to write robust, quality software and you will also have a good grounding to make the best use of specific component technologies, such as COM and CORBA. This a comprehensive five-day course with a combination of lectures and practical sessions for each chapter to reinforce the topics covered throughout the course. The practicals use code skeletons, so that you can concentrate on specific C++ features. The course includes coverage of the C++11 Standard Enhancements.

Training Partners

We work with the following best of breed training partners using our bulk buying power to bring you a wider range of dates, locations and prices.

Modules

Collapse all

Evolution of Standard C++ (4 topics)

  • ISO C
  • ISO C++
  • Overview of the standard library

C++11 Language Enhancements (4 topics)

  • Changes to the language and syntax
  • lambdas, r-values and move constructor
  • additions to the standard library

C++ and OO Refresher (5 topics)

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

Copying and Conversions (6 topics)

  • 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 (7 topics)

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

Delegation Techniques (8 topics)

  • 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 (6 topics)

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

Template Functions (4 topics)

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

Template Classes (4 topics)

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

Iterators and Algorithms (6 topics)

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

Exception Handling and Safety (8 topics)

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

Memory Management (7 topics)

  • 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 (5 topics)

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

Inheritance Techniques (11 topics)

  • 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

Functional Abstraction (5 topics)

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

Template Techniques (9 topics)

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

Multithreading Techniques (4 topics)

  • Creating multithreaded applications in C++ using the new std::thread class and other related classes new to C++11
  • Brief overview of essential threading concepts
  • Dealing with interesting issues concerning shared data, using locks, atomic and conditional variables

Prerequisites

You must have solid and genuine experience of C++ including class definitions and member functions, constructors and destructors, references, virtual functions and new and delete operators. Ideally, you will have attended one of our C++ programming courses and have been using C++ solidly for at least six months. You should also have a solid appreciation of object-oriented principles

Course PDF

Print

Share this Course

Share

Recommend this Course

Sections