In this course, experienced programmers will get a comprehensive, in-depth view of the C++ language. Included is complete coverage from fundamental concepts of class, inheritance, virtual functions. In addition to syntax, this course integrates the pragmatic and the theoretical with discussions of object-oriented principles, beneficial design criteria, efficiency tradeoffs, common design patterns, and other useful idioms and programming techniques.
Introduce program start, variable types, flow of control, and i/o.
Learn functions, parameter passing, references, arrays, global and static variables, defaults, and inline.
Cover constants, enumerations, typedef, switch, c and c++ strings, using directives, structs, reference variables, constant references, overloading, and template functions.
- Member Functions
Examine member functions, definition and invocation syntax, and const issues.
Discuss inheritance, data and functions, its design meaning, overriding, and chaining.
Examine constructors and destructors, multiple and default constructors, array construction, and unnamed temporaries.
Introduce public, private and protected access specification, friends, and class.
Consider virtual functions, type compatibility, and dynamic binding.
Cover template classes, syntax, instantiation, and parameters.
Examine pointer types and syntax, indexing and relation to arrays, arithmetic, pointers to object, and use in connected data structures.
- Dynamic Memory
Learn dynamic memory, allocation and deallocation, syntax and purpose, arrays, and memory leaks.
- Standard Smart Pointer
Introduce the standard smart pointers std::unique_ptr and std::shared_ptr
Cover operator overloading and various operators.
- Dynamic Memory 2
Discuss use of dynamic memory by classes, and copy and assignment issues.
Introduce exceptions, various syntax and use, and interaction with destructors.
- Constructors 2
Introduce construction of aggregate and derived objects, initialization syntax, and automatic constructor generation.
Examine name collision issues, nested types, static members, and namespaces.
- Virtual 2
Cover implementation of dynamic binding, use in writing generic code, abstract operations, pure virtual functions, and virtual destructors.
- Inheritance 2
Discuss multiple and private inheritance.
- Type Conversion
Examine casting, cast operators, dynamic cast, rtti, and explicit.
- Functions 2
Learn function objects, overloading operator function call, pointers to global functions and member functions, and callback-based notification.
- Lambda Expressions
Introduce lambda expressions and closures
- Std Containers
Discuss fundamentals of standard library containers, use, iterators, algorithms, function parameters, nested typedefs, and generic code.
Consider preprocessor directives, code selection and generation, and macro parameters.
Cover issue in separate compilation, code organization, dependencies, and guards.
- Classes, member functions, and protection
- Inheritance, single, and multiple
- Constructors and destructors
- Overloading, dynamic binding, and virtual functions
- Polymorphism and generic programming
- Template functions and classes
- Exceptions and error handling
- Operator overloading
- Dynamic memory, copy/assignment, and memory management
- Type conversion and run-time type information (RTTI)
- Namespaces and project organization
- Efficiency issues, code generation, and inlining
- Function objects, pointers, and callbacks
- Standard library io-streams, strings, and containers
- Effective programming idioms and techniques
- Object-oriented programming, patterns, and design
Experienced programmers who want to learn as much as possible about C++
Practical experience from an object-oriented language such as Java or C#. No experience of C++ is required.