C++ Programming for C Programmers Training

We offer private customized training for groups of 3 or more attendees.

Course Description

 
This course is a comprehensive hands-on introduction to object oriented programming in C++ for C programmers. Emphasis is placed on the features of C++ that support effective modeling of the problem domain and reuse of code. The course consists of two modules. In the first module object oriented concepts are introduced. The C++ class construct is introduced and its key features elaborated step-by-step, providing full implementation of abstract data types. C++ memory management is discussed. Function and operator overloading and the use of references are covered. The scope and access control mechanisms of C++ are described. Inheritance is introduced. The use of virtual functions to implement polymorphism is discussed. The second module presents intermediate topics. The ANSI C++ Standard Library is covered, including namespaces, the new header files and basic string class. Templates are covered, including an introduction to the Standard Template Library (STL). There is a chapter on I/O streams, including formatting and file I/O. Practical issues of C++ programming, such as reliability, testing, efficiency and interfacing to C, are discussed. The course introduces newer features of C++ such as exceptions, runtime type information (RTTI), and the new C++ cast syntax. Extensive programming examples and exercises are provided. The course is designed so that it can be taught in any environment with an ANSI C++ compiler.
Course Length: 5 Days
Course Tuition: $2090 (US)

Prerequisites

A good working knowledge of C programming.

Course Outline

 

Concepts of Object-Oriented Programming
Object
State and Behavior
Abstraction
Encapsulation
Class and Instantiation
Abstract Data Types
Methods
Invoking Methods
Messages
Class Inheritance
Polymorphism

Classes in C++
Data Encapsulation in C
The C++ Class
Structures and Class in C++
Implementation of a C++ Class
this Pointer
Code Organization
Scope Resolution Operator
Abstract Data Types
Test Programs for C++ Classes

Functions in C++
Function Prototypes in C++
Strong Type Checking
Conversion of Parameters
Inline Functions
Inline Functions in Header Files
Default Arguments
Function Overloading
Argument Matching
Argument Matching through Promotion
Match through Type Conversion
Call by Value

Constructors and Destructors
The Problem of Initialization
Constructors and Initialization
Constructor in Stack Class
Object Creation and Destruction
Destructors
Multiple Constructors
String Class Implementation
Hidden Constructors
Using a Default Argument

Memory Management in C++
Why is Memory Management Important in C++?
Choices for an Object�s Memory
Typical Memory Layout
Free Store Allocation
new Operator
Memory Allocation Errors
new vs. malloc
delete Operator
Destructor (Review)
Hiding Memory Management
String Class Specification (Version 2)
String Class Implementation
String Class Bug

References and Argument Passing in C++
Variables
Argument Passing
Call-by-Value
Reference Declarations
Call-by-Reference
Copy Constructor
Default Copy Constructor
Bug in String Class
Specification of String Class
Implementation of String Class
Test Program
Output of Test Program
Review of Constant Types
Constants and Arguments
Chains of Functions Calls
const Objects and Member Functions

Operator Overloading, Initialization, and Assignment
Operator Overloading
Operator Functions
Semantics of return
Returning a Temporary Object
Returning a Reference
Initialization vs. Assignment
Semantics of Assignment
Assignment
Assignment Bug
Overloading =
Review of this Pointer
Type Conversions
Conversion by Construction
Overloading Cast Operator
Test Program

Scope and Access Control
Scoping in C++
Block and Function Scope
File and Global Scope
Class Scope
Constant Types and Scope
Enumeration Types
Enumeration Types and Class Scope
:: for Global Data
Static Class Members
Initialization of Static Member
Static Function Class Members
Access Control
Friend Functions
Invoking Member and Friend Functions
Implementing a Friend Function
Efficiency and Friend Functions
Introduction to Inheritance
Inheritance Concept
Inheritance in C++
Employee Test Program
Protected Members
Best Class Initializer List
Composition
Member Initializer List
Order of Initialization
Inheritance vs. Composition

Polymorphism and Virtual Functions
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

ANSI C++ Library
ANSI C++ Library
Hello ANSI C++
Namespaces
ANSI C++ String Class
Templates

Templates
General Purpose Functions
Macros
Function Templates
Template Parameters
Template Parameter Conversion
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
Standard Template Library
STL Components
STL Elements of a Simple Program
Simple STL Program
Map Container

Input/Output in C++
Input/Output in C++
Built-in Stream Objects
Output Operator <<
Input Operator >>
Character Input
String Input
Formatted I/O
Streams Hierarchy (Simplified)
File I/O
File Opening
Integer File Copy
Character File Copy
Overloading Stream Operators
Implementing Overloaded Stream Operators

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

Exception Handling
Exception Handling
try and catch
Exception Flow of Control
Context and Stack Unwinding
Handling Exception in Best Context
Benefits of Exception Handling
Unhandled Exceptions
Clean Up
Multiple Catch Handlers

Runtime Type Information
Runtime Type and Polymorphism
type_info Class
typeid Operator
Compiler Options
Safe Pointer Conversions
Dynamic Cast
New C++ Style Casts
Static Cast
Reinterpret Cast
Const Cast
 

Course Directory [training on all levels]

Upcoming Classes
Gain insight and ideas from students with different perspectives and experiences.

C++ Uses & Stats

C++ is Used For:
Software Development Search Engines Operating Systems Video Games
Difficulty
Popularity
Year Created
1983
Pros
Popular: 
C/C++ is everywhere. In particular, they power more technologies than we give it credit for.
 
Flexible:
C++ is a multi-paradigm coding language. This means that it supports other styles such as procedural programming as well as Object-Oriented Programming. 
 
Fast: 
Because it is compiled, C++ gains a lot of speed. and is the language of choice for some applications as an example in the finance industry, where small differences in speed in high-frequency trading platforms can make the difference between a profit or a loss.
 
Job Opportunities: 
C++ developers are high in demand. There are over 14,000 C++ open positions on linkedIn alone. 
 
Similarity to Other Languages: 
Many other languages like C, C#, and Java have very similar syntax to C++, making them easy to learn for those that already know C++.
Cons
Difficult to Learn:  
C++ syntax is complex and the standard library is small, making C++ difficult to learn for someone with little programming experience. Although, it's believed to be more difficult to learn C++ than other languages, more accurately it probably takes a bigger investment of your time and effort to learn than some other languages. 
 
Strict Syntax: 
There is not much flexibility to the syntax, so it can be difficult to write code in a readable way.
 
Little Memory Management:
C++ does very little memory management, forcing the programmer to do most of it themselves.
 
Debugging Issues:
C++ can be difficult and complex to debug when it is used for web applications. 
C++ Job Market
Average Salary
104000
Job Count
32816
Top Job Locations

New York City 
Seattle 
San Francisco 

Complimentary Skills to have along with C++

C/C++ are the grandfather of most other languages. Once you understand C syntax and (OOP) Object Oriented Programming, you're well on your way to greener pastures. 

Since the .NET development ecosystem spans a wide array of capabilities and tools, it is difficult for .NET developers to know which .NET development skills and training to pursue in order to increase their marketability — and earning potential.  For that reason, learning supplemental languages such as Java, JavaScript, Python, C/C++, and others is expected in today’s competitive skill-set driven playing field.

Interesting Reads Take a class with us and receive a book of your choosing for 50% off MSRP.