C++ grew out of the popular C programming language and, in many quarters, has become the language of choice in software construction. Compilers, interpreters, virtual machines, operating systems, and many applications are implemented in C++, and understanding of this language confers understanding of how other languages and platforms operate.
C++ is an accomplished mix of type-safety, power and brevity of expression; with run-time efficiency that can rival hand-coded assembler. The evolution of the language and its idioms means that modern C++ offers tantalising possibilities that are unavailable in other languages.
This three-day course is a comprehensive route to understanding and working with C++. Every aspect of the language is covered from essential concepts, through major aspects such as inheritance and polymorphism, to the power of templates, the STL and generic programming.
This course is hands-on and uses a single exercise-problem that is developed incrementally through the curriculum. This presents a consistent set of realistic and meaningful challenges, which allow delegates to understand and factor-in each new concept in a linear fashion, resulting in a complex and fully functional application.
This course is appropriate to C developers who wish to migrate upwards from C, or those who wish to migrate across from another language. The course is also aimed at developers with existing C++ experience, who wish to consolidate their understanding, and to expand their skills to encompass, contemporary C++ design and best practice. Basic experience of software development is assumed, but, while some knowledge of C is useful, no prior experience of C or C++ is essential.
| Duration | : 3 Days |
| Availability | : On site |
| Materials | : Yes |
| Exercises | : Yes, hands on |
| Price | : £95 per delegate, plus VAT |
| Core Concepts |
Compilation and the pre-processor Built-in types and operators Blocks, functions and function overloading Flow control: conditionals and loops Values, references and pointers Const and const correctness Inline and template functions |
| Classes and Member Functions |
Representing complex variables Subsumption (Has A) abuse and misuse Classes and association (Uses A) Template classes Access control: private, public and friend Member functions, the 'this' pointer Mutablility, static member-functions Constructors and destructors Default, copy and explicit constructors |
| Further Concepts |
Dynamic allocation Operator overloading Namespaces Casting and RTTI |
| Extension and Polymorphism |
Principles of extension and inheritance Extension myths, abuse and misuse Derived-class member functions Constructors and destructors in derived types Slicing Private and protected inheritance Virtual and pure virtual functions Constructors, destructors and virtual functions Virtual copying and virtual destructors |
| Exception Handling |
Try, throw and catch Trapping and re-throwing exceptions The standard exception hierarchy Exception specifications |
| The STL |
Vectors, deques and lists Sets, multisets, maps and multimaps Bi-directional and random access iterators STL algorithms Stream I/O and I/O formatting |