Essential C++
This course introduces the C++ language for general use. It is a subset of our more extensive 5 day course C++-501: C++ for Embedded Developers.
The C++ language is covered in depth, aiming to overcome any fears of this large language by the covering memory and performance issues. This course will clearly demonstrate both the strengths and weaknesses of C++ versus C. Good programming practise is considered throughout this highly practical course.
This course is suitable for programmers who do not need to have in-depth knowledge of embedded programming concepts or concurrency issues. This course is also useful for Hardware Engineers needing to learn C++, for example to move onto using SystemC.
It is assumed delegates will have a working knowledge of the C programming language.
Course Outline
From C to C++:
- Non object-oriented C++ enhancements to basic C
- Conveniences of C++ over and above C
Introduction to Object Oriented (OO) Principles:
- Key characteristics of OO development
- OO techniques and the software development process
Introduction to Classes:
- Classes & class instances
- Methods
- Constructors & destructors
More on Classes:
- Inlining member functions
- Const member functions
- Static class members and functions
- Arrays of classes
- Implementing object relationships
Inheritance:
- Building class hierarchies
- Dynamic binding for class methods, virtual functions
- Polymorphism
Multiple Inheritance (MI):
- MI and interfaces
Functions and Operators:
- Class defined conversions
- Overloading and function selection
- Friend functions
- Overloading operators
- Dynamic memory allocation revisited
Exception Handling:
- What are exceptions?
- Throwing an exception
- The try block
- Catching an exception
- Rethrowing exceptions
- Catch all handlers
- Exception specifications
Templates:
- Introducing parameterised types and functions
- Function templates
- Class templates
The Standard Library:
- Introduction to the Standard Template Library
Software Structuring:
- Structuring large scale software systems
- Separate implementation from interface header files
- Dealing with name conflicts
- Linking with other languages
Course Overview
A 3 day course covering C++ in general 50% of the course is spent on practical work.
Course Objectives:
- To provide an understanding of the essentials of the C++ programming language.
- To give you practical experience of writing C++ for real systems.
- To give you the confidence to apply these new concepts to your next project.
Delegates Will Learn:
- The core C++ syntax and semantics
- About memory and performance issues associated with C++
Pre-requisites:
- A working knowledge of C
Who Should Attend?
- Programmers who are embarking on a project using C++ for the first time.
- Developers currently reluctant to move to C++ from C as they believe it poses too great an overhead.
- Programmers needing to know C++ to interface to off-the shelf libraries and development tools.
- Hardware Engineers needing to learn C++, for example to move onto using SystemC
Duration:
- Three days.
Course Materials:
- Delegate handbook
Related Courses:
- OO-503 Real-Time Systems Design with UML
- OO-301 Applying Real-Time UML
- AC++-501 Advanced C++ for Embedded Systems
- C++-501 C++ for Embedded Developers
- RTOS-201 Fundamentals of Real-time Operating Systems
Course Workshop:
All exercises are PC based using the latest version of Microsoft Visual Studio.


