C++ Advanced: Extended Programming Techniques for C++ Developers
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 xx in our training "C++: Object-oriented Programming".
- C++ history
- Basic compiler functionality
- Practical tips: Helpful online links
C++ Basics - Short Summary
- 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
- 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 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
- 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
- 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
- Functionality and application
- regex library
- Practical examples
- 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).
- 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.
|2.250,00 €||4.5 days|
|Training code: E-C++/FOR|
* Price per attendee, in Euro plus VAT
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.
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.