Wednesday 18 October 2017

Developing & Delivering KnowHow

Home > Training > Comprehensive C++

Comprehensive C++

Standard Level - 5 days

view dates and locations

Comprehensive C++ teaches the C++ programming language in the context of electronic system design, validation and implementation, where C++ is used both for abstract system-level modelling and for embedded software implementation. It is a direct replacement for a general class in C++ programming, with the added benefit that the syllabus, contextual examples and exercises are tuned to the requirements of the embedded system and System-on-Chip communities.

Comprehensive C++ provides an excellent full scope primer for any of the Doulos SystemC courses, or for anyone wishing to use C++ in the context of electronic system level modelling, hardware-software integration or embedded system implementation.

The workshops are based around carefully designed exercises to reinforce and challenge the extent of learning, and comprise approximately 50% of class time.

Who should attend?

Comprehensive C++ is aimed at electronic hardware, software and system-on-chip engineers who need to gain a working knowledge of the C++ language. The course is also suitable as a general introduction to C++ programming, particularly for anyone working in an electronics-related business area or with a background in digital electronics.

What will you learn?

  • The syntax and semantics of the C++ language
  • The principles of object-oriented modelling and programming
  • The skills needed to apply C++ to common tasks in the context of electronic system level modelling
  • An overview of the principles of embedded software programming, real-time operating systems and development tools and how these principles are realized using C++


Delegates should have had some exposure to the C programming language, in particular a basic level of familiarity with functions, variables, data types, operators, and statements. A good working knowledge of another high-level programming language is an acceptable alternative. No previous knowledge of C++ is required. This course is not suitable as a first course in computer programming.

Please contact Doulos direct to discuss and assess your specific experience against the Pre-requisites.

Course materials

Doulos Course materials are renowned for being the most comprehensive and user friendly available. Their style, content and coverage is unique in the HDL training world, and has made them sought after resources in their own right. Fees include:
  • Fully indexed course notes creating a complete reference manual
  • Workbook full of practical examples and solutions to help you apply your knowledge

Structure and Content

Day 1- Learn about the differences between C and C++

Summary of C

A refresher on basic C syntax • Functions • Control flow • Fundamental types • Literals • Derived types • Operators • Standard libraries

From C to C-1999 and C++

The features added to C by C++ and the ANSI C-1999 standard • const • inline • Stream I/O • Function prototypes • Pass-by-reference • Default arguments • Function and operator overloading

Linkage and Storage

Learn some tricky features often overlooked in C, but necessary for C++ • Scope • Linkage • Linking C and C++ • Namespaces • Static, automatic and dynamic storage • Memory management • new • delete • Arrays • Pointers • Strings

C++ Development Environments for Desktop and Embedded Systems

Compilers • Linkers • Loaders • Debuggers • Integrated development environments • Cross-compilers • In-circuit emulation

Day 2- An introduction to object-oriented programming

Classes and Objects

Introduction to modelling and abstraction • Information hiding • Abstract data types • Classes and objects • Public and private class members • Member functions • Scope resolution


How to ensure that objects are properly initialised, and how to tidy up afterwards • Constructors • Destructors • Copy constructors • Pointers and objects

Members and Friends

More features of C++ classes • Friends • Operator overloading • Overloading assignment • this • Static members • Constant objects and members

Day 3- Master the subtleties of object-oriented programming in C++

Object-Oriented Modelling and The UML

Learn the principles of object-oriented design • Class relationships • The Unified Modelling Language • Class and object diagrams • Association • Composition • Dependency • Implementing class relationships in C++ • Initialization of class members


Derived classes • Inheritance • Protected members • Casting pointers • Order of initialization

Virtual Functions

Inheriting common behaviour • Overriding methods • Virtual functions • Polymorphism • Late binding • Virtual destructors • Abstract base classes and pure virtual functions

Multiple Inheritance

Single Inheritance • Multiple inheritance • Virtual multiple inheritance • Interfaces • Composition again

Day 4- Learn to make use of some standard libraries and to develop your own class templates

Strings and Streams

The string class • I/O streams • I/O of user-defined types • Manipulators • Buffering • Formatted and unformatted streams

Further C++ Features

Run-Time Type Identification • Type casts • User-defined conversions • Nested classes • Pointer-to-member


Function templates • Class templates • Template arguments • Template specialization • Building simple data structures using templated and untemplated classes

Day 5 - Embedded Programming and Standard Libraries


Error handling • Throwing and catching exceptions • Handlers • Standard exception classes• Preventing memory leakage during exceptions

Principles of Embedded Programming

Concurrency • Threads • Synchronisation • Memory maps • Communicating with peripherals • Meeting external timing constraints • Process scheduling and pre-emption • Using C++ thread classes • Real-time operating systems

Standard Libraries

Summary of the standard C and C++ libraries • Using container classes, algorithms and iterators from the standard libraries

C++ 2011

Brief History of C++ • Maintaining compatibility • Nested templates • Type inference • Range based for-loops • Lambdas • Null pointer • Explicit conversion operators • Overridden and final methods • Defaulted and deleted behavior • Enhanced enumerations • Compile-time assertions • Shared pointers • Better random numbers • Efficient arrays • Unordered sets & maps • Regular expressions • Asynchronous calls & futures • Mutex

Looking for team-based training, or other locations?

Complete an on-line form and a Doulos representative will get back to you »

Back to top
Privacy Policy Site Map Contact Us