Intermediate C++ Programming

Course Description

This 5 day course broadens the skills of a C++ language programmer by examining sophisticated C++ concepts such as templates, exceptions, memory management, advanced inheritance issues, disambiguation of overloaded functions, private and protected inheritance, binary I/O and class libraries.
5 days
Contact us for pricing
 

Prerequisites

Students should have completed an introductory C++ programming course or has had equivalent knowledge.

What you should already know – A Review

Rationale for a New Programming Language
The Language of Object-Orientation
A Typical C++ Class
Issues Regarding Member Functions vs. Non-Member Functions
friend or non-friend
Functions Returning References
Relationships
Initialization Lists
Inheritance in C++
Access Levels
Simple C++ I/O
The Many Uses of const

Parameterized Types - Templates

Templates
Overloading Functions
Template Functions
Specializing a Template Function
Disambiguation under Specialization
Template Classes
Instantiating a Template Class Object
Rules for Template Classes
A Non-Member Function with a Template Argument
Friends of Template Classes
Templates with Multiple Type Parameters

Relationships of All Kinds

Uses of Member Initialization Lists
Initialization Lists under Composition
Initialization Lists under Inheritance
Efficiency
Dynamic Memory Allocation
operator= and Composition
Constructors and Composition
What is Not Inherited?
Summary - Constructors and operator=
Public Inheritance
virtual Functions
A Shape Class Hierarchy
Polymorphism
Pure Virtual Functions
Abstract Base Classes
Private Inheritance
"Using" Relationships
Associations

Multiple Inheritance

Multiple Inheritance
Ambiguities
virtual Base Classes
The Dominance Rule
Multiple Inheritance and Composition
operator=

Data Structures

Introduction
A Simple List
Layering Type-safe Classes Upon List
A Template List Class
Iterators
A Template Iterator
Stack and Queue Classes
Templates and Inheritance

Function Pointers

Why Have Function Pointers?
Passing Functions as Arguments
Registering Functions
Function Pointers in C++
Callback Functions
A Class with a Callback Object
Registration of Exception Handlers

Exceptions

What Are Exceptions?
Traditional Approaches to Error Handling
try, catch, and throw
A Simple Exception Handler
Multiple catch Blocks
The Exception Specification List
Re-throwing an Exception
Cleanup
Exception Matching
Inheritance and Exceptions
Resource Allocation
Constructors and Exceptions
Destructors and Exceptions
Catch by Reference

The C++ Standard Template Library

Introduction
The Standard Template Library
Design Goals
STL Components
Iterators
vector
list
set
map
find
merge
accumulate
Adaptors

Disambiguation

Conversion
int Conversion
float and double Conversions
Arithmetic and Pointer Conversion
Inheritance Based Conversion
Overloaded Functions
Exact Match
Match with Promotion
Match with Standard Conversion
User Defined Conversion
Constructors as Conversion Operators
Ambiguities

10: I/O

Introduction
Manipulators
Writing Your Own Manipulators
Overloading the I/O Operators
Disk Files
Reading and Writing Objects
Internal Transmission of Data
A Spell Checker
Handling Streams in Constructors and Destructors
Treating a File as an Array

Miscellaneous Topics

Namespaces
Reference Counts
RTTI
Casts
Having a Limited Number of Objects
Smart Pointers

C++