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.
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.
FACE-TO-FACE TRAINING
Price * | Duration |
---|---|
2.600,00 € | 4 days |
Training code: E-C++/FOR * Price per attendee, in Euro plus VAT |