Experience Embedded

Professional Training, Consulting and Project Support

C++ Advanced: Extended Programming Techniques for C++ Developers - Face-to-Face Training

In view of the increase in software complexity, many applications benefit from advanced C++ constructs; additional support is provided by modifications and extensions of the current C++ standard.

  • Content
     
  • Objectives
     
  • Participants
     
  • Requirements
     

You make efficient use of templates and exceptions. You have extensive knowledge of the Standard Template Library (STL). You implement advanced object-oriented concepts and designs with C++, even in combination with C++ multithreading. You are able to optimize existing and new applications as regards performance and consumption behavior.

The C++ advanced training addresses programmers, software developers, software designers and software architects.

Solid knowledge of the C++ basics as covered in our training "C++: Object-oriented Programming".

Introduction

  • C++ history
  • Basic compiler functionality
  • Practical tips: Helpful online links

C++ Basics - Short Summary

  • Keywords
  • Variable categories, types, alignment
  • Classes and objects
  • Constructor types and destructor
  • Operators with overload
  • Function pointers in classes
  • Strings and streams
  • Class relations (association, self-association, aggregation, composition, inheritance, multiple inheritance and alternatives)
  • Interface concept with strictly virtual functions
  • Exercise: Comprehending the given SW architecture, you get to know the builder pattern, implement classes, composition, inheritance, and test these automatically using the TDD process (test driven development).
  • Doing so, you consider quality aspects like object-oriented programming, modularization, reusability and extendability

Exceptions

  • Exception handling - definition and programming
  • Exception classes and hierarchies
  • User exceptions
  • C++ standard exceptions
  • Practical tips: Concepts and guidelines
  • Exercise: Integrating flexible exception handling in the exercise application

Runtime Type Identification (IRTTI)

  • RTTI - definition and programming
  • type_info class
  • Relation to exception handling
  • Applications and consequences in use

New Style Casts

  • Static, dynamic, const and reinterpret cast
  • The right choice for use
  • Relation to RTTI and exception handling

Memory Management

  • Memory segments (BSS block started by symbol, heap, stack)
  • Comparison and assessment of data segments
  • Dynamic memory management with new and delete
  • Overload (local and global) of new and delete
  • Algorithms
  • Virtual destructor
  • Placement new
  • Relation to exception handling
  • Smart pointers (also from the STL)
  • Practical tips: Identifying risks and avoiding pitfalls

Template Functions and Template Classes

  • Basic functionality
  • Template functions, template classes and their application
  • Examples of template classes
  • Inheritance and interfaces with template classes
  • Assembler, memory and runtime analysis and optimization
  • Containers/ algorithms in STL style
  • Runtime vs. compile time polymorphism
  • Perfect forwarding with templates
  • Variadic template functions and template classes
  • Alias templates
  • Practical examples for template classes
  • Exercise: Applying the observer pattern in the design of the application and implementing it based on an own, container-type template class

STL Standard Template Library

  • Containers, container adapters
  • Iterators
  • Algorithms, function objects
  • Memory allocator class
  • Practical tip: Overview of all STL container elements and their connection
  • Exercise: Applying the observer pattern in the design of the application and implementing it based on an STL container class

Multithreading and Atomic Datatypes

  • Multithreading - basic concepts
  • Threads, mutex, condition variable, future
  • Applying the mechanisms
  • Exercise: Adapting the application to a timer and controlling it through a thread, using an additional operating system abstraction with wrapper classes

Regular Expression

  • Functionality and application
  • regex library
  • Practical examples

Efficiency

  • Optimization aspects and consumption behavior: data, program memory and CPU processing time
  • Overhead minimization and performance maximization
  • Checklist - assessment of the key language constructs
  • Practical tip: Online compilers

Typical Pitfalls and Popular Idioms (PIMPL, RAII, NVI, ...)

  • RAII (resource acquisition is initialization), resource wrapper
  • NVI (non-virtual interfaces)
  • PIMPL (pointer to implementation)
  • Handling self-assignment in assignment operator
  • Practical tips: Further C++ idioms

Exercises in the C++ Advanced Training

  • You will use Microsot Visual Studio for implementing the entire exercise (watch application).

MicroConsult Plus:

  • All participants have the following options to further use their exercises and the solutions developed by MicroConsult from this workshop:
  • You take the files with you on a free USB stick provided by MicroConsult, or …
  • You e-mail the files to your account, or …
  • You get access to file download on request.
  • You get the C++ program code and the UML model of the watch application.
  • You get all examples for C++ in electronic format and can easily adjust them to your development environment.
  • You get a helpful notation overview for UML (Unified Modeling Language) in DIN-A3 format.

The training price includes:
Lunch, drinks, training documentation and your training certificate.


ALL INCLUSIVE!

Related trainings

C++ Training for Beginners: Basic Programming Techniques for C++ Developers - Face-to-Face Training
Training code: E-C++

Embedded C++ Advanced: Object-Oriented Programming for Microcontrollers with C++/EC++ - Face-to-Face Training
Training code: E-EC++FOR

Coaching: Programming Languages
Training code: CE-PRG-LAN


Related trainings

FACE-TO-FACE TRAINING

Price *Duration
2.600,00 €4 days
Training code: E-C++/FOR
* Price per attendee, in Euro plus VAT
> Registration form download (PDF)> Training details as PDF

Onsite Training

Our customized workshops integrate your specific project tasks in our training content and accommodate your requirements on content, time, location, duration, technical environment and knowledge transfer methodology.

Please contact us for further information or an individual quotation.

> Training details as PDF

Face-To-Face - German

Date Duration
22.04. – 25.04.2024 4 days  
21.10. – 24.10.2024 4 days  

Live Online - German

Date Duration
01.07. – 04.07.2024 4 days  
17.02. – 20.02.2025 4 days  

Coaching

Our coaching services offer a major advantage: our specialists introduce their expertise and experience directly in your solution process, thus contributing to the success of your projects.

Coaching: Programming Languages

C++ Advanced: Extended Programming Techniques for C++ Developers - Face-to-Face Training

Content

Introduction

  • C++ history
  • Basic compiler functionality
  • Practical tips: Helpful online links

C++ Basics - Short Summary

  • Keywords
  • Variable categories, types, alignment
  • Classes and objects
  • Constructor types and destructor
  • Operators with overload
  • Function pointers in classes
  • Strings and streams
  • Class relations (association, self-association, aggregation, composition, inheritance, multiple inheritance and alternatives)
  • Interface concept with strictly virtual functions
  • Exercise: Comprehending the given SW architecture, you get to know the builder pattern, implement classes, composition, inheritance, and test these automatically using the TDD process (test driven development).
  • Doing so, you consider quality aspects like object-oriented programming, modularization, reusability and extendability

Exceptions

  • Exception handling - definition and programming
  • Exception classes and hierarchies
  • User exceptions
  • C++ standard exceptions
  • Practical tips: Concepts and guidelines
  • Exercise: Integrating flexible exception handling in the exercise application

Runtime Type Identification (IRTTI)

  • RTTI - definition and programming
  • type_info class
  • Relation to exception handling
  • Applications and consequences in use

New Style Casts

  • Static, dynamic, const and reinterpret cast
  • The right choice for use
  • Relation to RTTI and exception handling

Memory Management

  • Memory segments (BSS block started by symbol, heap, stack)
  • Comparison and assessment of data segments
  • Dynamic memory management with new and delete
  • Overload (local and global) of new and delete
  • Algorithms
  • Virtual destructor
  • Placement new
  • Relation to exception handling
  • Smart pointers (also from the STL)
  • Practical tips: Identifying risks and avoiding pitfalls

Template Functions and Template Classes

  • Basic functionality
  • Template functions, template classes and their application
  • Examples of template classes
  • Inheritance and interfaces with template classes
  • Assembler, memory and runtime analysis and optimization
  • Containers/ algorithms in STL style
  • Runtime vs. compile time polymorphism
  • Perfect forwarding with templates
  • Variadic template functions and template classes
  • Alias templates
  • Practical examples for template classes
  • Exercise: Applying the observer pattern in the design of the application and implementing it based on an own, container-type template class

STL Standard Template Library

  • Containers, container adapters
  • Iterators
  • Algorithms, function objects
  • Memory allocator class
  • Practical tip: Overview of all STL container elements and their connection
  • Exercise: Applying the observer pattern in the design of the application and implementing it based on an STL container class

Multithreading and Atomic Datatypes

  • Multithreading - basic concepts
  • Threads, mutex, condition variable, future
  • Applying the mechanisms
  • Exercise: Adapting the application to a timer and controlling it through a thread, using an additional operating system abstraction with wrapper classes

Regular Expression

  • Functionality and application
  • regex library
  • Practical examples

Efficiency

  • Optimization aspects and consumption behavior: data, program memory and CPU processing time
  • Overhead minimization and performance maximization
  • Checklist - assessment of the key language constructs
  • Practical tip: Online compilers

Typical Pitfalls and Popular Idioms (PIMPL, RAII, NVI, ...)

  • RAII (resource acquisition is initialization), resource wrapper
  • NVI (non-virtual interfaces)
  • PIMPL (pointer to implementation)
  • Handling self-assignment in assignment operator
  • Practical tips: Further C++ idioms

Exercises in the C++ Advanced Training

  • You will use Microsot Visual Studio for implementing the entire exercise (watch application).

MicroConsult Plus:

  • All participants have the following options to further use their exercises and the solutions developed by MicroConsult from this workshop:
  • You take the files with you on a free USB stick provided by MicroConsult, or …
  • You e-mail the files to your account, or …
  • You get access to file download on request.
  • You get the C++ program code and the UML model of the watch application.
  • You get all examples for C++ in electronic format and can easily adjust them to your development environment.
  • You get a helpful notation overview for UML (Unified Modeling Language) in DIN-A3 format.