Course Overview
- This comprehensive, five-day course consists of three modules:
- A preliminary segment reviews topic which includes inheritance, the ANSI C++ Standard Library, templates. Input and Output streams, and practical issues of C++ programming, such as reliability, testing, efficiency and interfacing to C.
- The material is covered as needed depending on the background of the participants
- The second segment covers advanced topics like advanced issues of inheritance and polymorphism, Principles of effective class design, including the orthodox canonical form, use of composition, templates and interface inheritance
- This course covers exception handling and runtime type information – RTTI. Several inheritances are covered, including the complications that are introduced by this powerful feature
- Concepts of Advanced applications of C++ are studied, including smart pointers and reference counting
- The third segment introduces the Standard Template Library (STL). The components of algorithms , data structures and iterators are covered, Illustrations are provided a number of important containers, such as vectors, stacks, queues, lists and sets. Extensive programming examples and exercises are provided.
Requirements
- Prior experience in C++
Curriculum
-
Inheritance and Polymorphism
- Inheritance Concept
- Inheritance in C++
- Protected Members
- Base Class Initializer List
- Composition
- Member Initialization List
- Order of Initialization
- Inheritance vs. Composition
- Summary – Inheritance
- A Case for Polymorphism
- Dynamic Binding
- Pointer Conversion in Inheritance
- Polymorphism Using Dynamic Binding
- Virtual Function Specification
- Invoking Virtual Functions
- VTable
- Virtual Destructors
- Abstract Class Using Pure Virtual Function
- Employee as an Abstract Class
- Heterogeneous Collections
- Summary – Polymorphism
-
ANSI C++ Library
-
Templates
- General Purpose Functions
- Macros
- Function Templates
- Template Parameters
- Template Parameter Conversion
- Function Template Problem
- Generic Programming
- General Purpose Classes
- Class Templates
- Array Class Implementation (array.h)
- Using the Array Template
- Template Parameters Class Template Instantiation
- Non Type Parameter Conversion
- Template Library
- STL Components
- Generic Programming
- STL Elements of a Simple Program
- Simple STL Program Map Container
-
Input/Output in C++
-
Practical Aspects of C++ Programming
- Interfacing C++ to Other Languages
- Calling C from C++
- _cplusplus Macro
- Calling C++ from C
- Interface Module for Stack Class
- Namespace Collisions
- ANSI Namespace
- Reliability Philosophies of Languages
- Prototypes and Type Checking
- Constant Types
- Access Control in C++
- Reviews and Inspections
- Inspections and C++
- Testing Strategies for C++
- Performance Considerations
- Class Libraries
-
Advanced Polymorphism and Inheritance
-
Exception Handling
-
Runtime Type Information
-
Inheritance Hierarchies and Multiple Inheritance
-
Applications of C++ Concepts
-
An Overview of Templates
- Templates
- Overloading Functions
- Template Functions
- Specializing a Template Function
- Disambiguation under Specialization
- Template Classes
- An Array Template Class
- Instantiating a Template Class Object
- Friends of Template Classes
- Templates with Multiple Type Parameters
- Non Class-type Parameters for Template Classes
- Comments Regarding Templates
- Templates and Inheritance
-
Overview of STL
-
Examples from STL
-
STL Containers
-
STL Iterators