fbpx
Code: PRG500
Duur in dagen: 4
Download: Open Rooster.pdf
Download: Infosheet
€ 2150

Cursus Modern C++ Programmeren

25-06 t/m 28-06-2019
27-08 t/m 30-08-2019
29-10 t/m 01-11-2019
24-12 t/m 27-12-2019
25-02 t/m 28-02-2020
Uw startdatum
Regio:

Doelgroep Cursus Modern C++ Programmeren

Cursus Modern C++ ProgrammerenDe cursus Modern C++ Programmeren is bedoeld voor developers die bekend zijn met C++ maar die zich willen verdiepen in de nieuwste en meest geavanceerde technieken en mogelijkheden van de taal.

Voorkennis Cursus Modern C++

Om aan deze cursus deel te nemen is kennis van de basis concepten van C++ en ervaring met programmeren in C++ vereist.

Uitvoering Training Modern C++

De theorie wordt behandeld aan de hand van presentaties. Illustratieve demo’s worden gebruikt om de behandelde concepten te verhelderen. Er is een sterke afwisseling van theorie en praktijk en ruime gelegenheid om te oefenen. De cursustijden zijn van 9.30 tot 16.30.

Officieel Certificaat Modern C++

De deelnemers krijgen na het goed doorlopen van de cursus een officieel certificaat Modern C++ Programmeren.

Inhoud Cursus Modern C++ Programmeren

In de cursus Modern C++ komen de nieuwe en geavanceerde aspecten van de C++ taal gebaseerd op de standaarden C++11, C++14 en C++17 ruimschoots aan de orde. De cursus gaat van start met een overzicht van de features die in C++11 zijn geintroduceerd zoals type inference, initializer lists, range based for loop, lambda functies en strongly typed enums. Vervolgens wordt ingegaan op right references en de performance winsten die geboekt kunnen worden door move constructors naast copy constructors te gebruiken. Ook de nieuwe mogelijkheden met betrekking tot inheritance met de keywords default, delete, override en final komen aanbod. En passant wordt ingegaan op de implementatie van virtual functions en de noodzaak van virtual destructors. Daarnaast wordt in detail gekeken naar smart pointers en hierbij komen unique pointers, shared pointers en weak pointers aan de orde. Ook operator overloading en templates staan op het programma, waarbij ingegaan wordt op variadic templates en perfect forwarding. Het modern C++ Resource Acquisition is Initialization ofwel RAII idioom komt aan de orde bij de bespreking van exception handling. Threads evenals de synchronisatie tussen threads zijn onderdeel van de standaard en worden besproken. Hierbij wordt ook ingegaan op asynchrone calls met promises en futures. Vervolgens komen specifieke C++11 en C++17 features aan bod zoals optional types, structured binding declarations en constructies uit de wereld van functioneel programmeren zoals fold expressions. De cursus wordt afgesloten met een overzicht van de geavanceerde mogelijkheden van de Standard Template Library STL.

Module 1 : Modern C++ Features

Module 2 : References and Move Semantics

Module 3 : Classes and Inheritance

C++ Timeline
C++11 Features
Type Inference
Auto Keyword
Deduction with decltype
Deducing return Types
Uniform Initialization
Initializer Lists
Range Based for Loop
Null Pointer Constant
constexpr Keyword
Static Asserts
Lambda Functions
Lambda Syntax
Strongly Types Enums
User Defined Literals
Raw String Literals
Reference Initialization
References and Pointers
Rvalues and Rvalues in C++
Passing and Returning References
Returning lvalue
Returning Reference to Global
Rvalue References
Comparing Reference Types
Rvalue Reference Usage
Assignment Operator
Copy Constructor
Passing and Returning Objects
Passing References to Objects
Move Constructor
Move Semantics
Move Assignment Operator
Golden Rule of 5
default Keyword
delete Keyword
Delegating Constructors
Inheritance
Inheriting Members
Calling Base Class Constructors
Multiple Inheritance
Virtual Derivation
Polymorphism
Virtual Functions
Virtual Function Table
Abstract Classes
Interfaces in C++
Destructors and Inheritance
Virtual Destructors
override Specifier
final Specifier

Module 4 : Smart Pointers

Module 5 : Operator Overloading

Module 6 : Templates

unique_ptr
Using unique_ptr
Specialization for Arrays
Replacement for std::auto_ptr
std::make_unique
shared _ptr Pointer
Control Block
shared_ptr Destruction Policy
shared_ptr Interface
Cyclic References
std::enable_shared_from_this 
weak_ptr
Using Smart Pointers
Operator Overloading
Syntax Operator Overloading
Overloading Numeric Types
Overloading Overview
Overloading Restrictions
When not to Overload
Operators as Class Members
Operators as Friend Functions
Overloading Stream Operators
Overloading ostream
Overloading istream
Overloading Unary Operators
Overloading Binary Operators
What are Templates?
Template Functions
Template Specialization
Template Parameter List
Inclusion Compilation Model
Class Templates
Template Member Functions
Template Parameter Scope
Templates and Statics
Templates and Friends
Recursive Analogy
Alias Templates
Perfect Forwarding

Module 7 : Exception Handling

Module 8 : Multiple Threads

Module 9 : Synchronization

Error Conditions and Exceptions
Exception Handling Process
Class Objects as Exceptions
Parameter Catch Block
Exception Hierarchy
Catching in Hierarchy
Golden Rule
Retrowing Exceptions
noexcept Specifier
Preventing Resource Leaks
RAII Idiom
C++ Standard Exceptions
User Defined Exceptions
Exception Handling Costs
Multiple Threads
Benefits and Drawbacks
Thread Charactistics
Thread Class
Simple Threads
Joining Threads
Detaching Threads
Thread ID
Callables
Passing Parameters
Pass by Reference
Pass by std::ref and std::move
Member Function as Thread
Thread Local Storage
Data Corruption and Synchronization
Lock Guard
Automatic Lock Management
Mutex and RAII
Recursive Locking
Timed Locking
Atomic Types
Call Once
Event Handling
Condition Variables
Wait and Notify
Promises and Futures
Asynchronous Tasks
Working with async

Module 10 : C++14 and C++17 Features

Module 11 : Standard Template Library

Init-statement for if
Selection Initialization
Structured Binding Types
Structured Binding Declarations
const if Expressions
Guaranteed Copy Elision
Inline Variables
Nested Namespaces
Fold Expressions
Fold Expression Variations
Optional Type
Small String Allocations
String View
Generic lambdas
Binary literals
Aggregate initialization
STL Core Components
Containers, Algorithms and Iterators
Container classification
Vectors, Lists and Dequeues
Adapters
Associative Containers
Maps and Hash Maps
Strings
Bitsets
STL Iterators
Reverse iterators
Iostream iterators
Function objects
STL Algorithms
Predicates and Comparators
STL Allocators

Kantooradres:
SpiralTrain BV

Gebouw "De Sijnsmeester"
Standerdmolen 8 – 1.11
3995 AA Houten

IP Computer Training Centrum
Diemerhof 32-36
1112 XN Diemen

020 7600027
http://www.ip-computer-training-centrum.nl

Compu Act Opleidingen
Slinge 303
3085 ER Rotterdam

023 - 551 3409
www.computertraining.nl

Trainspot
Kleine Singel 33
3572 CG Utrecht

030 - 737 05 81
http://www.trainspot.nl

IP Computer Training Centrum
Leenderweg 292
5644 AE Eindhoven

040 - 256 65 20
http://www.ip-computer-training-centrum.nl