C++ has been around since the 1980s but will probably still be around in decades to come as it's truly the 'Swiss army knife' of programming languages, being useful for everything from devices and embedded solutions to full-blown graphical desktop applications. Its long history means there are many ways to achieve things, such as handling object and memory management in your own code or letting smart pointers do this for you. C++ is at it's best when directly accessing low level features, but this can be dangerous if you're not entirely comfortable with what you're doing. This is where our training can really help.
This 5 day course covers the C++ language including recent features from the C++11, C++14 and C++17 updates. We have been using and training C++ since 1992 and can offer a wealth of experience for your benefit. The course covers the C++ language without assuming a particular target environment although we can also offer modules on particular areas such as MFC or Linux programming if required. The course includes several standard projects and a large number of optional exercises. The outline below is an example, as we would vary the content depending on your prior experience.
The 5 day course costs £3200 in total for up to 6 students, plus VAT and the instructor's reasonable expenses. Each student beyond 6 would cost £20 for the additional course materials. If you are interested in this course, please contact us by email at email@example.com or by phone on +44 (0)1285 713297.
Writing, building and running a C++ Program. Language structure. The main function. Basic stream and console input/output. Declaring and Initializing variables. Fundamental data types. Strings.
Control flow, loops and conditions. The for loop. Do and while. If and else. The conditional expression. Functions and argument passing. Argument passing by value and reference. Predeclarations and prototypes. Using header files. The switch statement. Variable scope - local, static, global. Variable lifetimes. Using namespaces. Memory management. Casting and cast types.
What is object orientation? Defining classes and creating objects. Classes vs data structures. Object oriented design concepts.
Encapsulation and data hiding. Constructors and destructors. Default constructors and initialization. Class definition and implementation. Inheritance and polymorphism. Overriding. Constructing applications using objects. Class examples. Practical polymorphism. Virtual functions. Abstract base classes. Run time type information and dynamic_cast. Constant and static members. Using 'this'. Calling the base class constructor explicitly. Friends. Multiple inheritance and virtual base classes.
Pointers and the use of new and delete. Arrays and collections. Safe use of pointers. Pointers and references. Range-based for loop - 'for each'.
Defining an operator function. Some rules. Mixing types. Implementing a postfix operator. Type conversion operators. Copy constructors and the assignment operator. Function objects and functors. Indexers.
The I/O stream library. Inserters and extractors. Error handling. Using exceptions. Using I/O streams with files. Flags and manipulators. Formatting.
Function templates. Type safety. Using multiple parameter types. Class templates. Using template classes. Using constants.
What is a smart pointer?. Smart pointers vs conventional pointers. Shared pointers. Unique pointers. Weak pointers. dynamic_pointer_cast. Alternatives outside the standard library.
The Standard Template Library
Collection classes. Vector. Reserving capacity. Iterators. Using auto for complex types. Stream iterators. Algorithms. Predicates. Using member functions in algorithms. Sorting. Collection types. Sets, maps and find. Threads and multitasking.
Overview of exception handling. Using traditional exception handling. Using the Standard Library exception class. Throwing and catching. bad_alloc. Overloading new and delete.
Additional and Historic Features
Lambdas. Structs, unions and typedef. More about main. Logical and bitwise operators. Conditional compilation and the pre-processor. Compatibility with C. More streams. Ancient features you may still meet.