
Welcome to Professional C++ - Object-Oriented C++ Programming.
My name is Chuck and I will be your instructor for this course. Your feedback is welcome and if I can assist you in any way, please feel free to contact me.
Receive additional instruction on Visual Studio Community 2019 within the professional C++17 object-oriented programming course.
Explore first classes in a C++17 object-oriented course, design class specs with Google Test, and implement an RGB color class with static and const members.
Implement the rgb color class in a test-driven workflow, packing red, green, and blue into a 24-bit value with set and get, and define static colors.
Learn how to use try, catch, and throw to manage exceptions and how invariants and RAII prevent leaks, ensuring safe error handling in C++.
Apply test-driven development to validate parameter ranges in c++ 17, throwing invalid argument for rgb, circle, and rectangle tests, with exceptions caught by reference for robust error handling.
Explore variadic templates in C++ by using ellipsis to pass a variable number of arguments, and learn compile-time overload generation with show and vector examples.
Learn to use shared pointers in C++17 by converting circle objects to shared pointers and updating tests and functions. See how shared pointers simplify ownership and keep vector copies lightweight.
Explore how weak pointers provide non-owning references from shared pointers, how locking yields a strong pointer, and how ownership decisions shape object lifetimes.
Learn inheritance and polymorphism in C++17, including base and derived classes, virtual and override keywords, and how substitutability enables runtime polymorphism with pet, cat, and dog examples.
Learn functional programming in C++ with callbacks, inversion of control, function pointers, and lambda expressions, moving boilerplate flow into a library and implementing a console menu framework.
Explore the command design pattern in C++ 17 by implementing a command interface, concrete show and quit commands, and replacing switch statements with polymorphic callbacks to achieve inversion of control.
Explore lambda expressions in C++11 as a simple anonymous function and adapter pattern alternative to defining a function object, with capture by value or reference and optional return type.
Learn to use lambda expressions with templates and the functional header for flexible menu callbacks. Capture outer scope, support function pointers, functors, and demonstrate inversion of control in your app.
Explore the C++ standard library algorithms and numeric operations, using lambda-based foreach, transform, and partition to manipulate containers. Learn accumulate, set operations, inner product, and iota for data processing.
This intermediate‑level course teaches you how to build professional, modern applications using C++ 17 and the full power of object‑oriented programming. Designed for developers who already understand the basics of C++ or come from languages like C, Java, or C#, this course takes you deep into the features, patterns, and best practices used in real‑world C++ development.
You’ll learn how to design and implement classes, manage memory safely, apply test‑driven development, use templates effectively, and leverage modern C++ features such as smart pointers, lambda expressions, functional programming utilities, and the STL. Throughout the course, you’ll also explore design principles and patterns that help you write clean, maintainable, and scalable C++ applications.
Chuck’s courses have been delivered to thousands of developers worldwide, including teams at major corporations, government agencies, and the military. His training is used internally at Microsoft to teach professional developers modern C++ techniques.
By the end of this course, you’ll be ready to contribute meaningfully to C++ projects with a strong understanding of object‑oriented design, modern C++ features, and the practical skills needed to write high‑quality software.
What You’ll Learn
Implement classes, constructors, destructors, and const‑correct code
Apply test‑driven development to guide implementation
Master memory management with pointers, references, move/copy semantics
Handle exceptions and design robust error‑handling strategies
Overload operators correctly and effectively
Use and create function and class templates, including variadic templates
Work with smart pointers (unique, shared, weak) using RAII
Apply inheritance, overriding, and polymorphism with best practices
Understand interfaces, dependency inversion, and interface segregation
Use lambda expressions, functional utilities, and modern STL features
Explore GOF design patterns implemented in C++
Build clean, maintainable, object‑oriented C++ 17 applications