C++ Programming for Non-C Programmers
C++
Programming for Non-C Programmers
Course
Length: 8 days, $239 per book
This
course provides a solid foundation in C++ for those without any
C programming experience. This course will cover the features
of the C++ language and emphasizes key object-oriented programming
concepts.
Audience:
Programmers moving to object-oriented programming using C++.
Prerequisites:
Professional programming experience.
Getting Started
The
First Program (hello.cpp)
Compile Steps
How to Compile and Run a Program
Data Types and Variables
Fundamental Data Types
Data
Type Values and Sizes
Variable
Declarations
Variable names
Constants
Character Constants
String Constants
Operators
and Expressions
What
are expressions?
Arithmetic Operators
Relational Operators
Assignment Operator
Expressions have resulting values
True and False
Logical Operators
Increment and Decrement Operators (++ and --)
'Operate-Assign' Operators (+=, *=, ...)
Conditional Expression
Operator Precedence
Precedence and order of evaluation
Evaluation of Logical Operators
Type Conversions
The cast operator
Control
Flow
tatements
if - else
if() - else if ()
switch()
while()
do - while()
for()
The for() loop - diagram
The break statement
The continue statement
Functions
What
is a function?
Why use functions?
Anatomy of a function
Arguments passed by value
When to Use the return Statement
Returning Non-integer Values
Functions in Multiple Source Files
The Concept of Variable Scope
Automatic Variables
Global (external) variables
Static Variables
External Static Variables
Pointers
and Arrays
What
is a pointer?
Pointer Operators
Why use pointers?
Arrays:
Arrays (a picture)
The & Operator
Pointers and arrays
Passing arrays to functions
Initializing arrays
Strings and character pointers
What is char s[7] ???
Arrays of pointers
Arrays of pointers - diagram
Command-line arguments
Structures
Comparison
of structures and arrays
Structure definitions
Structure declarations
Arrays of structures
Classes
Creating
a Data Structure
Methods
Object Scope
C++ Input and Output
Namespaces
Data Abstraction
Enforcing Data Encapsulation
File Organization
Classes in C++
Objects
this Pointer
Constructors
and Destructors
Debug
Output
The Default Constructor
When are Constructors Called?
The Destructor
The Copy Constructor
Other Constructors
Why Did It Work Before?
Composition
The Report Class
Code Reuse
Initialization Lists
Inheritance
Inheritance
Bugreport
Protected Access Modifier
Access and Inheritance
Constructors and Inheritance
Initialization Lists Revisited
Multiple Inheritance
Virtual
Functions
Inheritance
and Assignment
Inside Report's Assignment Operator
Using Pointers - a Quick Look at Basics
Class Assignment and Pointers
Static Binding
Dynamic Binding
Polymorphism
The show_rep() Function
Using the show_rep() Function
Designing Member Function Inheritance
Pure
Virtual Functions
Bugfix
and Its Relationship with Bugreport
Bugfix: Association with Bugreport
Using Bugfix with show_rep()
Adding Bugfix to the Hierarchy
Coding for the Document Class
Reexamining the Document Class
Pure Virtual Functions
Designing Member Function Inheritance
References
and Constants
References
Displaying References
Changing References
Pass by Reference
Returning by Reference
Constant Variables
Constant References
Constant Methods
new
and delete
new
and delete
Array Allocation
The Report Class
Compiler Version of the Copy Constructor
Guidelines for Copy Constructors
The Report Constructors and new
The Report Destructor and delete
Virtual Destructors
Casting
in C++
Casting:
A Review
New Casting Syntax
Creating a String Class
The String Class
The Conversion Constructor
Expanding Our Casting Options
Casting Operator
Using the Casting Operator
Class
Methods and Data
Class
Data
Class Methods
Using the New Data
More on Class Methods
Overloaded
Functions
unction
Overloading
Using Overloaded Functions
Rules for Overloading
Overloading Based on Constness
Default Arguments
Invoking Functions with Default Arguments
Overloaded
Operators
The
Basics of Overloading
Overloading operator+
Coping with Commutativity
Non-Commutative Operators
friends and Their Problems
The Assignment Operator
Overloading the << Operator
Using Date with cout
Exception
Handling
Why
Exception Handling?
try / catch / throw
Exception Classes
Standard Exception Hierarchy
Multiple catch Blocks
Catching Everything
Unhandled Exceptions
Exception in Constructors and Destructors
Designing for Exceptions
Standard Template Library
Class Template Concepts
Standard
Template Library (STL) Overview
Containers
Iterators
Iterator Syntax
Non-Mutating Sequential Algorithms
Mutating Sequential Algorithms
Sorting Algorithms
Numeric Algorithms
auto_ptr Class
string Class
STL
Containers
Container
Classes
Container Class Algorithms
vector Class
Additional vector Class Methods
deque Class
list Class
set and multiset Classes
map and multimap Classes
Appendix
A: Reference Sheets
Constants,
References, and Pointers
Input/Output
this Pointer
The Complete Report/Document Hierarchy
Appendix
B: Templates
Scenario
Designing an Array Class
Code for FloatArray
Code for IntArray
Templates
Template Syntax
Using Templates
Using Classes with Templates
Additional Template Features
Standard Template Library
Appendix
C: Sample Problems
Banking
System
Library Card Catalog
Diagrams for Banking and Library Problems
Object Diagram - Banking
Event Trace Diagram - Banking
Object Diagram - Library
Event Trace Diagram - Library
Appendix
D: Other C++ Features
Namespaces
The static_cast and reinterpret_cast operator
The dynamic_cast operator
The const_cast operator
mutable Data Members
The bool Datatype
new Operator Failure