C++ Advance Programming – Detailed Course Outline
Section 1 - Templates
- Template Functions and Classes
- Instantiation
- Overloading
- Specialization
- Working with Templates
- Member Templates
- Using export
- STL (Standard Template Library)
- Containers and Iterators
- Algorithms
Section 2 - Exception Handling
- Using Exceptions
- Exception Formats
- Exception Specifications
- Unexpected Exceptions
- Uncaught Exceptions
- Designing with Exceptions
- Exception Hierarchies
- Discrimination
- Using auto_ptr
- Exceptions thrown from Constructors
- Exceptions thrown from Destructors
- Resource Management
Section 3 - Class Design
- Class Design Topics
- Mutable Data Members
- Using explicit with Constructors
- Member Initialization
- Class Design Boilerplate
- Copy Initialization and Assignment
- Modifiers and Selectors
- Clone Functions
- Composite Templates
Section 4 - Object Storage Management
- New and Delete Formats
- Nothrow Operator new
- Placement Formats
- Explicit Destructor Calls
- Class Specific New and Delete
- Overriding Global Operators
- Memory Pools
- Reference Counts
- Design Approach
- Implementation
- Copy-on-writes
- Modifying Existing Classes
Section 5 - RTTI (Run Time Type Identification)
- Why RTTI?
- Implications for Class Library Design
- Controlling Object Behaviors
- RTTI Operators
- dynamic_cast
- typeid
- type_info Class
Section 6 - Multiple Inheritance
- Design Concepts
- Member Initialization
- Ambiguities
- Multiple Inheritance Patterns
- Distinct Bases
- Multiple Inclusion
- Virtual Bases
Section 7 - Working with C++
- Namespaces
- Namespace Definitions
- Unnamed Namespaces
- Using Directives
- Using Declarations
- Namespace Aliases
- C++ Techniques
- Objects as Return Values
- Eliminating Temporaries
- Virtual Constructors
- Smart Pointers
Lvalue and Rvalue Separation