C++ Avancerad programmering

C++ är standardspråket för att implementera många former av objektorienterade lösningar, men det är samtidigt ett av de svåraste språken att fullständig bemästra. I den här kursen går vi igenom hur man utvecklar professionella C++ applikationer med hög tillförlitlighet som är återanvändbara, lätta att testa och lätta att vidareutveckla både av dig själv och av andra. Du får också lära dig att behärskar de avancerade koncepten i C++ och hur du gör utvecklar effektiv kod med optimal minneshantering som kan exekvera på olika plattformar.

Utbildningen är en blandning av teori och praktiska övningar.

Målgrupp
Målgruppen är utvecklare som arbetat en tid med C++ och som vill fördjupa sina kunskaper, både när det gäller språket som sådant men även vanliga idiom och "best practices".

Mål
EEfter kursen slut har du en förståelse för hur du utvecklar professionellt i C++ och skriver effektiv C++-kod. Du får också lära dig att skriva plattformsoberoende kod och hur du kodar med stil i C++.

Bakgrundskunskaper
Du ska ha goda kunskaper i C++ och du bör lämpligen arbeta med C++ på daglig basis.

Språk
Utbildningsmaterialet är skrivet på engelska. Utbildningen kan genomföras antingen på svenska eller engelska.

Kurslängd
Kursen genomförs under tre dagar.

Innehåll
Vi går igenom:

Modern C++
    De viktigare förändringarna i modern C++

Mer om klasser
    Fördjupning i klasser, medlemmar, arv och polymorfism
    Genererade metoder and operatorer
    Resursallokerande klasser

R-value references och move semantics
    Konstruktor och tilldelningsoperator som flyttar data istället för att kopiera
    Effektiv initiering
 
Vocabulary types
    std::optional, std::any, std::variant och visitor

Templates
    Skapa klass- och funktionstemplates
    Explicit instansiering
    Explicit specialisering
    Partial instansiering
    Alias-templates

Funktionsobjekt och lambdauttryck
    Funktionsanropsoperator
    Funktionsobjekt som predikat
    std::function
    Använda yttre variabler - capture

Smartpekare
    Varför använda smartpekare?
    std::unique_ptr
    std::shared_ptr
    std::weak_ptr

Exceptions
    Prestanda med exeptions
    Assert eller exception?
    Exceptionsäkerhet

Chrono
    Olika typer av klockor
    Kalender
    Tidszoner
    Tidspann

Ranges  
    Ranges
    Views
    Rangealgoritmer

Avancerad templateprogramming    
    Variadiska templates
    SFINAE
    Concepts

Moduler
    module
    import
    export
    Build systems


Mer information
För mer information kontakta Åsa Detterfelt, 070-659 58 12, alternativt maila asa.detterfelt@mindroad.se.

Kurstillfällen:
Stockholm 13 - 15/1, 24 - 26/2, 21 - 23/4,  23 - 25/6
Göteborg 20 - 22/11, 17 - 19/2, 17 - 19/3, 19 - 21/5
Linköping 10 - 12/3