Previous
Next

I need more information

If you would like to speak to a member of our specialist team, please feel free to call our freephone number or email us directly:

0800 028 6400

enquiries@jbinternational.co.uk

Quote me | Enrol me

Advanced C++ Programming Training Course

Course code: C++ADV
Details: 10 June, 4 days, £1995 + VAT
9 September, 4 days, £1995 + VAT
2 December, 4 days, £1995 + VAT
OnsiteEnquire about bringing this course to your offices
Who should attend: Experienced C++ programmers, who are looking to gain advanced skills and programming techniques using C++
Prerequisite skills: Attendance of our introductory C++ Training Course or equivalent experience.

Course Outline

C++ is possibly the richest programming language in common use, and it allows programmers to write code using three distinct styles: procedural, object-oriented, and generic. This course is aimed to take C++ programmers to a new level of understanding and competence in their use of the C++ language and libraries. The course is divided into four parts: the first builds on existing knowledge, showing how to use basic language features correctly, and delegates will probably discover a number of things that they hadn't appreciated about the language and its use.

The second section of the course covers templates, the language feature that underlies the Standard Template Library and most recent advances in C++. It is not an exaggeration to say that a thorough understanding of templates is essential in order to be a modern C++ programmer.

The third part majors on OO development, and shows how popular idioms and design patterns can be implemented in C++. The final two sections look at the two main libraries used by C++ programmers today: the Standard Template Library and the Boost libraries. The course will introduce both libraries, discuss their main features, and show how to use them.

Unlike some "advanced" courses, this one does cover complex and advanced material. It is essential that delegates possess a good basic knowledge (and have practical experience) of OO programming in C++. As well as being comfortable with the basic syntax, you should be familiar with declaring, defining and using classes, inheritance, and dynamic memory management.

Course Content

Our hands-on Advanced C++ training course has been developed for real-world, commercial scenarios by our expert instructors. See below for detailed syllabus. If you have a technical question, please email sales@jbinternational.co.uk

This course will provide delegates with programming best practises in object oriented application development using the C++ programming language. Practical exercises are used throughout, using simple text code editors to get a full understanding of what's going on under the bonnet, but IDEs such as Visual Studio, Eclipse are available too.

 

Advanced C++ Programming Course Outline

Part 1: Using Language Features Correctly

Const and Casting

  • Const correctness
  • Overloading on const
  • C++ cast operators
  • Mutable

Conversions and Scope

  • Standard conversions
  • Converting constructors
  • User defined conversions
  • Namespaces
  • Koenig lookup
  • Nested types
  • Static

Proper Exception Handling

  • Throwing and catching correctly
  • Exception safe code

Memory Management

  • The new handler
  • Placement new
  • Overloading new and delete

Part 2: Templates

Template Functions

  • What are templates?
  • Implementing template functions
  • Template instantiation

Template Classes

  • Creating a template class
  • Class instantiation
  • Non-type template parameters
  • Specialization

Template Metaprogramming

  • A brief introduction to metaprogramming

Part 3: C++ Idioms and Design Patterns

Implementing Value Types

  • What are value types?
  • Construction and destruction
  • Copying and assignment
  • Operator overloading

The Handle/body Idiom

  • The Bridge design pattern
  • Using Bridge to decouple compilation
  • Implementing handle/body

Functors

  • What are functors?
  • Implementing functors using operator overloading

Smart Pointers

  • What are smart pointers?
  • Uses of smart pointers in C++
  • Implementing a simple smart pointer
  • Reference counting and smart pointers
  • Std::auto_ptr

Singletons

  • The Singleton design pattern
  • A naïve implementation
  • Problems with Singleton in C++
  • Controlling Singleton lifetime

Policy-Based Design

  • Efficient library design
  • Mixing templates and multiple inheritance
  • Policies and policy classes

Part 4: Standard Template Library

STL concepts

  • Concept-based programming
  • Containers, iterators and algorithms

Containers

  • Sequence containers
  • Associative containers
  • Adapters

Traits

  • The need for traits
  • Implementation of traits in STL

Iterators

  • The Iterator design pattern
  • Iterator concepts in C++
  • Iterators and containers
  • Implementing and using iterators
  • Stream iterators

Algorithms

  • The STL standard algorithms
  • Creating and using algorithm

Part 5: The Boost Libraries

Introduction to Boost

  • What is Boost?
  • Obtaining and installing Boost
  • Overview of the Boost libraries

Common Boost Libraries

  • boost::tuple
  • boost::any
  • boost::ref
  • The Boost smart pointers
  • boost::bind