Advanced C++ Development Techniques

5 Day Course
Hands On
Code LGCPPAV2

Book Now - 1 Delivery Method Available:

Scheduled Online Onsite

Overview

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.

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.

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

Hide all

Evolution of Standard C++ (3 topics)

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

C++ and OO Refresher (4 topics)

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

Copying and Conversions (4 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 (6 topics)

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

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

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

Template Functions (2 topics)

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

Template Classes (3 topics)

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

Iterators and Algorithms (5 topics)

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

Exception Handling (5 topics)

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

Exception Safety (4 topics)

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

Memory Management (5 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 (2 topics)

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

Inheritance Techniques (10 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

Template Techniques (8 topics)

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

Functional Abstraction (4 topics)

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

Prerequisites

  • Experienced C++ programmers wishing to substantially enhance their development skills.
  • You must have solid and genuine experience of C++ including class definitions and member functions.
  • Constructors and destructors
  • References
  • Virtual functions
  • 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 an appreciation of object-oriented principles, possibly from attending the Object-Oriented Software Development or an object-oriented analysis and design course.

Additional Learning

The courses below may help you meet the knowledge level required to take this course. If you are unsure please ask a training advisor .

or call:408-759-5074

Course PDF

Print

Share this Course

+1
Share

Recommend this Course

Sections