C++ Training Course

The Graphics Network

Training and Development for Windows, Linux and the Web

01285 713297 info@tgn.co.uk

C++ Training

C++ has been around since the 1980s but will probably still be around in decades to come as it's truly the 'Swiss army knife' of programming languages, being useful for everything from devices and embedded solutions to full-blown graphical desktop applications. Its long history means there are many ways to achieve things, such as handling object and memory management in your own code or letting smart pointers do this for you. C++ is at it's best when directly accessing low level features, but this can be dangerous if you're not entirely comfortable with what you're doing. This is where our training can really help.

This 5 day course covers the C++ language including recent features from the C++11, C++14 and C++17 updates. We have been using and training C++ since 1992 and can offer a wealth of experience for your benefit. The course covers the C++ language without assuming a particular target environment although we can also offer modules on particular areas such as MFC or Linux programming if required. The course includes several standard projects and a large number of optional exercises. The outline below is an example, as we would vary the content depending on your prior experience.

The 5 day course costs £3200 in total for up to 6 students, so if you have 6 people to train this would be £533 for each student. These prices exclude VAT and the instructor's reasonable expenses. Each student beyond 6 would cost £20 for the additional course manuals. If you are interested in this course, please contact us by email at enquiries@tgn.co.uk or by phone on +44 (0)1285 713297.

Course Outline:

Getting Started

Writing, building and running a C++ Program. Language structure. The main function. Basic stream and console input/output. Declaring and Initializing variables. Fundamental data types. Strings.

Structured Programming

Control flow, loops and conditions. The for loop. Do and while. If and else. The conditional expression. Functions and argument passing. Argument passing by value and reference. Predeclarations and prototypes. Using header files. The switch statement. Variable scope - local, static, global. Variable lifetimes. Using namespaces. Memory management. Casting and cast types.

Arrays and Pointers

'C-style' arrays. Array sizes and bounds checking. Multi-dimension arrays. Using pointers. Pointers and new. Dynamic arrays. Pointer arithmetic. Strings.

Object Orientation

What is object orientation? Defining classes and creating objects. Classes vs data structures. Object oriented design concepts.

Using Objects

Encapsulation and data hiding. Constructors and destructors. Default constructors and initialization. Class definition and implementation. Inheritance and polymorphism. Overriding. Constructing applications using objects. Class examples. Practical polymorphism. Virtual functions. Abstract base classes. Run time type information and dynamic_cast. Constant and static members. Using 'this'. Calling the base class constructor explicitly. Friends. Multiple inheritance and virtual base classes.

Dynamic Objects

Pointers and the use of new and delete. Arrays and collections. Safe use of pointers. Pointers and references. Range-based for loop - 'for each'.

Operator Overloading

Defining an operator function. Some rules. Mixing types. Implementing a postfix operator. Type conversion operators. Copy constructors and the assignment operator. Function objects and functors. Indexers.


The I/O stream library. Inserters and extractors. Error handling. Using exceptions. Using I/O streams with files. Flags and manipulators. Formatting.


Function templates. Type safety. Using multiple parameter types. Class templates. Using template classes. Using constants.

Smart Pointers

What is a smart pointer?. Smart pointers vs conventional pointers. Shared pointers. Unique pointers. Weak pointers. dynamic_pointer_cast. Alternatives outside the standard library.

The Standard Template Library

Collection classes. Vector. Reserving capacity. Iterators. Using auto for complex types. Stream iterators. Algorithms. Predicates. Using member functions in algorithms. Sorting. Collection types. Sets, maps and find. Threads and multitasking.


Processes and threads. Threads in the standard library. Exploiting threads. Return values and futures. Atomic objects and the atomic template. Synchronization between threads. Mutexes and lock guards. Other synchonization mechanisms. Operating system specifics.

Exception Handling

Overview of exception handling. Using traditional exception handling. Using the Standard Library exception class. Throwing and catching. bad_alloc. Overloading new and delete.

Additional and Historic Features

Lambdas. Structs, unions and typedef. More about main. Logical and bitwise operators. Conditional compilation and the pre-processor. Compatibility with C. More streams. Ancient features you may still meet.

Copyright © 1996 - 2018 The Graphics Network Ltd. Registered in England No. 2549085
All trademarks used on this site are respectfully acknowledged.
Microsoft is a registered trademark of Microsoft Corporation in the United States and other countries.