Search, explore and find the perfect course for you
C++ for Experienced Developers
Have you worked with high level object oriented languages such as C# or Java and suddenly find yourself thrown into a project containing C++ code?
Are you finding the transition less than smooth?
When designing applications in C++, fundamental design guidelines tend to differ from many other languages. In C++, you will suddenly find yourself without a garbage collector, making memory leaks a very pressing concern through every step of the development work. What you lose in memory management, you gain in an abundance of cryptic compiler errors, weird segfault-errors and pitfalls behind every corner.
This course will bring you up to speed in the C++ world, covering aspects of both the well-established C++03 as well as the new features in C++11. It will draw on your previous experiences as a software developer and show how to transition into the world of natively compiled code that is C++. Common errors and mistakes and how to avoid them will be shown. Typical idioms to avoid typical problems will also be shown.
This course is meant as a crash course in C++ for experienced developers.
You will most likely have a very firm grip on object oriented programming in a managed language such as C# or Java. Knowing some C++ is always positive, but in no way mandatory.
What you will learn
- Pointers and references
- Type inference
- Memory allocations
- Header files, implementation files and the linker
- Objects - classes, structs and unions
- Constructors and destructors
- Exception handling
- Traditional enums and C++11 enum classes
- List, vectors and other STL collections
- Iterators, algorithms and range-based iteration
- Single and multiple inheritance
- The diamond problem
- The oddities called protected and private inheritance
- Abstract base classes
- Pure virtual functions
- Polymorphism in C++
- The type slicing problem
- Friend functions
- Operator overloading
- The "Rule of Three"
- Component composition
- Standard Template Library
- Templates (and how they differ from generics)
- Inherited template classes: covariance and variance
- Template type querying with decltype
- Explicit template instantiations
- Template metaprogramming
- The pImpl idiom
- The RAII idiom
- Smart pointers and ownership semantics
- rvalues, lvalues and Move Semantics
- Function pointers
- Lambda expressions
- Higher-order programming
- Streams and file management
- Regular expressions
- C++11 threads and locks
- The <chrono> header
- C++11 specific STL additions
- Loading shared libraries at runtime