Description
Who Should Attend
This course is designed for individuals with prior programming experience who want to develop capability in C++, including:
• Developers transitioning from C to C++
• Software Engineers working with systems or embedded applications
• Programmers looking to apply object-oriented principles in C++
• Technical professionals working with C++ codebases
Prerequisites
Participants should have:
• a working knowledge of C programming or another structured language
• familiarity with basic programming concepts such as variables, control flow, and functions
An understanding of object-oriented concepts is helpful but not essential.
Learning Objectives
By the end of this course, participants will be able to:
• distinguish key C++ language features not available in C
• compile and execute C++ programs confidently
• apply object-oriented programming concepts including encapsulation, inheritance, and polymorphism
• design and implement classes and reusable components
• use constructors, destructors, and dynamic memory management
• apply function overloading, inline functions, and operator overloading
• use I/O streams and file handling mechanisms
• understand scope, storage class, and linkage
• handle errors using exception handling
• apply templates for generic programming (optional / advanced)
Course Content
Introduction to C++
Participants begin by understanding the foundations and evolution of the language.
Topics typically include:
• features of C++
• history and origin of the language
• advantages of C++
• the C++ compilation process
C++ vs C
This section explores how C++ extends and differs from C.
Topics typically include:
• compatibility between C and C++
• improved readability and commenting
• keywords, modifiers, and declarations
• derived data types
• operator precedence and associativity
• scope resolution operator (::)
• namespaces
• input/output streams
Functions in C++
Participants learn how to structure programs using functions.
Topics typically include:
• function declaration and definition
• reference parameters
• default arguments
• function overloading
• inline functions
• type-safe linkage and name mangling
• combining C and C++ functions
Object-Oriented Concepts
This section introduces the key principles of object-oriented programming.
Topics typically include:
• procedural vs object-oriented programming
• data abstraction and encapsulation
• inheritance and polymorphism
• impact of object-oriented design
• basic object-oriented design techniques (e.g. CRC cards)
Classes and Encapsulation
Participants learn how to define and work with classes.
Topics typically include:
• class definition and syntax
• data members and member functions
• internal vs external member functions
• access control (private vs public members)
Constructors, Destructors, and Memory Management
This section focuses on object lifecycle and memory handling.
Topics typically include:
• constructors (including overloaded and parameterised)
• destructors
• dynamic memory allocation (new and delete)
• pointers to classes
• the this pointer
• friend functions and classes
• copy constructors
• avoiding memory leaks
Input/Output Streams
Participants learn how to handle input and output in C++.
Topics typically include:
• standard I/O streams (cin, cout, cerr)
• stream operations and manipulators
• file input/output
• stream state checking
• additional I/O member functions (get, put, write)
Operator Overloading
This section explores how operators can be customised for user-defined types.
Topics typically include:
• operator overloading rules and restrictions
• binary and unary operators
• assignment operators
• increment and decrement operators
• type conversion operators
• friend and non-member operator functions
Constants, Scope, and Linkage
Participants develop a deeper understanding of program structure and data handling.
Topics typically include:
• named constants
• constants with pointers and references
• constant member functions
• logical constness and mutable
• scope and storage class
• linkage
• static class members
Inheritance
This section focuses on software reuse and extending functionality.
Topics typically include:
• inheritance concepts and terminology
• base and derived classes
• access specifiers (public, private, protected)
• single and multiple inheritance
• constructors and destructors in inheritance
• containment
Polymorphism and Dynamic Binding
Participants explore dynamic behaviour in object-oriented systems.
Topics typically include:
• polymorphism and binding types
• static vs dynamic binding
• virtual functions
• rules for dynamic binding
• abstract classes and pure virtual functions
Error and Exception Handling
This section focuses on building robust applications.
Topics typically include:
• exception handling model
• exception handling keywords
• generating and handling exceptions
• creating custom exception classes
• propagation and handling strategies
Templates (Optional / Advanced)
Participants are introduced to generic programming concepts.
Topics typically include:
• class and function templates
• template syntax and arguments
• template specialisation
• advanced template techniques
Delivery Approach
This is a hands-on, structured programme designed to build practical capability.
It includes:
• instructor-led technical sessions
• guided coding exercises
• practical examples and scenarios
• progressive development of concepts
Duration
3 Days (adjust if needed if this version differs)
Delivery Options
This course can be delivered as:
• a public scheduled course
• a private team programme
• virtual delivery
• on-site classroom training
Outcomes
After completing this course, participants will be able to:
• develop structured and reusable C++ applications
• apply object-oriented principles effectively
• manage memory and resources safely
• use advanced features such as operator overloading and templates
• build maintainable and scalable software systems
Additional Notes
This course provides a strong foundation for progression into:
• advanced C++ (C++17 / C++20)
• embedded and systems programming
• high-performance software development
Participants are encouraged to apply the techniques learned to their own development environments and projects.
Senior Software Architect & Development Instructor
Microsoft MVP | 30+ Years Engineering Experience
This course is presented by Peter
Peter brings more than 30 years of experience in software architecture, development, and technical training, helping engineering teams design, modernise, and improve complex systems across enterprise, cloud, embedded, and data-driven environments.
He has been exploring the role of AI in software engineering since the early wave of modern AI tooling, focusing on how development teams can use AI productively while maintaining strong engineering standards, governance, and architectural discipline.
Alongside his engineering background, Peter has a Master’s level background in Mathematics and is currently working towards a PhD, bringing deep analytical insight into how AI systems behave and how engineers should evaluate and integrate them responsibly.




