Free, Unlimited Access
17,337 Reviews
Progress directly from our introductory course, expanding your programming knowledge to more advanced concepts.
We also have follow-ups to this course, where we build complex, portfolio-ready projects.
No copying-and-pasting code in this course.
We explain every line of code we're using, so you understand exactly what is happening.
Everything we create is organised and implemented using modern, professional practices.
This means the techniques we learn are usable in large, professional projects.
We don't just explain what we're doing, but also why.
This builds transferrable skills, so you can take what you've learnt and apply them to your own projects.
This course is intended for those who already have a basic familiarity with object oriented programming in C++. It is designed as a follow up for our introductory course:
Those who already have some knowledge of C++, or are familiar with object oriented programming in another language, may be able to skip the introductory course.
The first chapter of this course includes a summary of the topics covered, to help you get caught up.
A quick crash tour of C++ basics, for those with previous object oriented programming experience.
A deeper look at how memory is managed in C++, and how we can take control of that process to keep larger projects maintainable.
An introduction to metaprogramming using templates, allowing us generate classes and functions at compile time.
Learn advanced compile-time techniques covering overload resolution, type traits and C++20 concepts
Explore a deeper and more organised way of detecting and handling errors, which lets us keep larger projects maintainable
A detailed guide to arrays and linked lists in C++, which allow us to place collections of our objects into sequential containers
An introduction to hash-based data structures - containers that allow us to efficiently find specific objects by value
Learn some of the many other choices we have for organising collections of objects, and the advantages and disadvantages of each option.
A deeper look at C++ functions, and more advanced techniques of how we can create and use them.
Expanding on our knowledge of iterators, and introducing C++20 ranges, allowing us to create more flexible containers and algorithms.
An overview of the most useful algorithms that are available within the standard library
A deeper look at classes and objects, allowing us to empower our custom types with more advanced capabilities.
Develop a deeper understanding of strings in C++, and how we can use them with streams to transfer data between components.
Learn how we can serialize parts of our program, enabling us to save and restore objects from the user's hard drive.
Learn how to use third party libraries to gain quick and easy access to new and powerful capabilities
Continue your progress in this course with the following lessons. These are recommended for you based on your progress: