C++ Programming with Test Driven Development Course

Course Outline

Introduction

 

C++ is built upon C, A Brief History of C++, A C++ Overview

Compatibility with C
Type Safety
Keywords
Inline Functions
Function overloading
Overloading Constructors
Constructors specify type conversions
References: Alias Names.
const:
this 'n that
Concatenating operations
Operators can be overloaded
Mechanics of operator overloading
Operator Overloading
Output Operator
Friends

 

What is a Class?

Class versus Struct
Programming Languages Specify Abstract Data Types
Classes Define New

 

Objects

What is an Object?
Encapsulation
Collaborate
Messages
Abstraction
Polymorphism

 

Relationships

Binary Association
Navigable Associations
Aggregation
Composition
Parameter Association
Inheritance
Virtual Functions
Abstract Classes
Order of Construction and Destruction
Partial Abstractions

 

Data Types

Classes Specify State Variables
Classes Specify Interfaces
Constructors
Public
Private
IO

Dynamic Memory Allocation

Scope & Lifetime
Auto Variables
Transitory
Operators new and delete
The heap
Referent Ownership
Dynamic Memory Management
Aliasing
Assignment Operator
Covariance and Contravariance
Hiding
Cloning
Virtual Destructors
Nested Blocks Expressions
Zero is an int and a special pointer
Operators and their precedence
Logical Operators
Control Structures
Loop Variable Scope
"Leapfrogging" variables

Exception Handling

Exceptions
What is an Exception?
How to throw an exception object
How to catch an exception class
Stack Unwinding
Resource Acquisition is Initialization

Working with Functions in C++

Function Arguments
Default arguments
Ellipsis
Reference Arguments
Const Reference Arguments
File Naming Conventions
Main Function
Arguments
Static Initialization
Expressions with const
variables
Const Correctness
The "canonical class form"

Miscellaneous Topics

Casting operators
Multiple Inheritance
Private Inheritance
Composition
Interfacing to C

 

Standard Template Library

What is STL?
Containers
Template-Based
Basic Structure
Containable Objects
Containers
Vector
Self Description
Iterators
By-Value
List
Maps
Using a Map
Pairs
Algorithms
Strings

Basic Streams

Streams and I/O
Streams
Inserters
Extractors
Prefabricated Streams
The advantages of streams
IO Manipulators
flush
endl
Other types of io manipulators
File Streams
ostrstream
istrstream

Templates

Template Functions
Template Classes
Template Member Functions
How templates are compiled
Writing Template Code
Specializing Templates
An Additional Warning
Summary

 

Variable Types

Basic Types
Boolean
References
Enums
const

Summary