C++ Programming – Advanced

01

Course Overview

Modern C++ is a sophisticated language with a variety of features.  The capability of the language is virtually unlimited.  In addition, C++ gives developers complete control of the programming experience.  This facilitates the development of unique solutions only possible with the C++ programming language.

This class reviews the more advanced features of C++, including threading and smart pointers.

02

Key Learning Areas

By the end of this training, participants will have the experience and skill set necessary to create professional C++ applications leveraging the full capabilities of the language, including:

  • Operator overloading
  • Class with pointer
  • Move semantics
  • Smart pointers
  • Threading
  • Design patterns
  • New style casting
  • Lots of tips and trips
  • Lambdas
03

Course Outline

Overview C++
Overloading
This module introduces students to overloading the behavior of built-in C++ operators and enables their usage on user defined data types.

  • Operator overloading
  • Conversion functions
  • Operator new
  • Safe arrays

Classes with Pointers
This module explains some of the memory-related problems that result from using classes that contain pointers.  You will learn some of the mechanisms of handling these problems such as the copy constructor.

  • Pitfalls
  • Copy constructor
  • Operator= overloading
  • virtual destructors

Move Semantics
Resources can be transferred to other objects without copying in C++.  You will learn how Rvalues and move semantics can be used to optimize memory usage by avoiding copying C++ objects.

  • What is move?
  • Copying versus moving
  • Rvalue references
  • Move constructor and Move assignment

Smart Pointers
Pointers, if not correctly managed, can lead to a lot of memory issues and unexpected program behavior.  You will learn to use smart pointers and how they address pointer management problems in C++.

  • shared_ptr
  • weak_ptr
  • unique_ptr
  • Destruction policies

Lambda Functions
Lambdas are key to making functions first class citizens in C++.  You will learn how to define a lambda function and use it in your programs.

  • What are lambda functions
    Closure
  • auto
  • mutable

Functional Programming in C++
C++ can be used for functional programming through the application of lambdas and function pointers.  You will learn how to apply these techniques in your day-to-day programming tasks.

  • Universal function types
  • Wrappers (std::function)
  • Binders
  • Function objects

Threading
This module introduces you to the importance of multi-threading and provides a basic foundation for creating threads in C++.

  • Threading theory
  • Creating a thread
  • Thread state
  • Thread class

Thread Synchronization
Threads that share resources can cause a lot of problems if the code is not properly written.  In this module, you will learn about various threading constructs that can be used to share resources in parallel programming.

  • Mutex
  • Conditions
  • Future
  • Atomics

New Style Casting
This module explains the new syntax and constructs used to cast data from one type to another in C++.

  • Const_cast
  • Static_cast
  • Dynamic_cast
  • Reinterpret_cast

Tips and Tricks
Design patterns
The purpose of this module is to expose the learner to proven techniques for solving known programming problems.  These techniques are commonly referred to as design patterns.

  • Singleton
  • Factory
  • State
  • Command
  • Observer
04

Who Benefits

Professionals with 1 to 2 years of professional C++ programming language experience.

05

Prerequisites

Want this course for your team?

Atmosera can provide this course virtually or on-site. Please reach out to discuss your requirements.

Atmosera is thrilled to announce that we have been named GitHub AI Partner of the Year.

X