Students Will Learn |
- C++ Syntax, Data Types, & Control Flow
- Handling Data
- Creating & Using Objects
- Dynamic Memory Management
- Inheritance & Polymorphism
- Streaming I/O
|
Course Description: This hands on C++ programming course provides an accelerated introduction to the most essential syntactical components of the C and C++. The course begins by introducing the built in data types, fundamental control constructs, and rich expression operator repertoire common to both C and C+. The remainder of the course teaches object-oriented programming using features of C++, congruent with the C++ for C Programmers course. Hands on exercises are performed throughout each day to demonstrate key concepts and assure mastery by the student.
|
|
Course Prerequisites: Prior programming experience, though not necessarily in C or C++. Some prior knowledge of basic C syntax is helpful but not required. |
|
C++ Programming Course Overview |
|
ANSI C++ Fundamentals |
Data Types, Storage, Classes, and Scope |
- Block Structure of C and C++ Programs
- Fundamentals of Syntax
- Built in Data Types
- The Preprocessor and Macros
- Standard Runtime Libraries and Header Files
|
- Data Types and Qualifiers
- Constants and String Literals
- Static versus Automatic Storage
- Scope and Variables
- Initialization Rules
|
Operators and Expressions |
Flow Control Constructs |
- Arithmetic, Logical, and Bit Operators
- Precedence and Associativity
- Assignment
- Type Conversion Rules, Type Casting
|
- Conditional Constructs: if, switch
- Looping Constructs: while, do, for
- Programming Style
|
Pointers |
Functions |
- Advantages of Pointers
- Uses of Pointers
- Declaring Pointers
- Pointer and Address Arithmetic
- Initializing and Dereferencing Pointers
- Pointers versus Arrays
|
- Purpose of Functions
- Functions versus Inlining
- The Argument Stack
- Passing by Value
- Passing by Reference
- Declaring External Functions
- Function Prototyping
|
Moving from C to C++ |
Handling Data |
- New Compiler Directives
- Stream Console I/O
- Explicit Operators
- Standard Libraries
- Data Control Capabilities
|
Functions |
- Function Prototypes and Type Checking
- Default Function Data Types
- Function Overloading
- Problems with Function Overloading
- Name Resolution
- Promotions and Conversions
- Call by Value
- Reference Declarations
- Call-by-Reference and Reference Types
- References in Function Return
- Constant Argument Types
- Conversion of Parameters Using Default Initializers
- Providing Default Arguments
- Inline Functions
|
Dynamic Memory Management |
- Advantages of Dynamic Memory Allocation
- Static, Automatic, and Heap Memory
- Free Store Allocation with new and delete
- Handling Memory Allocation Errors
|
Controlling Object Creation |
- Object Copying and Copy Constructor
- Automatic Copy Constructor
- Conversion Constructor
|
|
- New Declaration Features
- Initialization and Assignment
- Enumerated Types
- The bool Type
- Constant Storage
- Pointers to Constant Storage
- Constant Pointers
- References
- Constant Reference Arguments
- Volatile Data
- Global Data
Creating and Using Objects |
- Creating Automatic Objects
- Creating Dynamic Objects
- Calling Object Methods
- Constructors
- Initializing Member consts
- Initializer List Syntax
- Allocating Resources in Constructor
- Destructors
- Block and Function Scope
- File and Global Scope
- Class Scope
- Scope Resolution Operator ::
- Using Objects as Arguments
- Objects as Function Return Values
- Constant Methods
- Containment Relationships
|
|
Inheritance |
Streaming I/O |
- Inheritance and Reuse
- Composition vs. Inheritance
- Inheritance: Centralized Code
- Inheritance: Maintenance and Revision
- Public, Private and Protected Members
- Redefining Behavior in Derived Classes
- Designing Extensible Software Systems
- Syntax for Public Inheritance
- Use of Common Pointers
- Constructors and Initialization
- Inherited Copy Constructors
- Destructors and Inheritance
- Public, Protected, Private Inheritance
|
- Streams and the iostream library
- Built-in Stream Objects
- Stream Manipulators
- Stream Methods
- Input/Output Operators
- Character Input
- String Streams
- Formatted I/O
- File Stream I/O
- Overloading Stream Operators
- Persistent Objects
|
Introduction to Object Concepts |
Templates |
- The Object Programming Paradigm
- Object-Orientated Programming Definitions
- Information Hiding and Encapsulation
- Separating Interface and Implementation
- Classes and Instances of Objects
- Overloaded Objects and Polymorphism
|
- Purpose of Template Classes
- Constants in Templates
- Templates and Inheritance
- Container Classes
- Use of Libraries
|
Strings in C++ |
Exceptions |
- Character Strings
- The String Class
- Operators on Strings
- Member Functions of the String Class
|
- Types of Exceptions
- Trapping and Handling Exceptions
- Triggering Exceptions
- Handling Memory Allocation Errors
|
C++ Program Structure |
Reliability Considerations in C++ Projects |
- Organizing C++ Source Files
- Integrating C and C++ Projects
- Using C in C++
|
- Function Prototypes
- Strong Type Checking
- Constant Types
- C++ Access Control Techniques
|
Polymorphism in C++ |
Multiple Inheritance |
- Definition of Polymorphism
- Calling Overridden Methods
- Upcasting
- Accessing Overridden Methods
- Virtual Methods and Dynamic Binding
- Virtual Destructors
- Abstract Base Classes and Pure Virtual Methods
|
- Derivation from Multiple Base Classes
- Base Class Ambiguities
- Virtual Inheritance
- Virtual Base Classes
- Virtual Base Class Information
|
Declaring and Defining Classes |
Operator Overloading |
- Components of a Class
- Class Structure
- Class Declaration Syntax
- Member Data
- Built-in Operations
- Constructors and Initialization
- Initialization vs. Assignment
- Class Type Members
- Member Functions and Member Accessibility
- Inline Member Functions
- Friend Functions
- Static Members
- Modifying Access with a Friend Class
|
- Advantages and Pitfalls of Overloading
- Member Operator Syntax and Examples
- Class Assignment Operators
- Class Equality Operators
- Non-Member Operator Overloading
- Member and Non-Member Operator Functions
- Operator Precedence
- The this Pointer
- Overloading the Assignment Operator
- Overloading Caveats
|
The Standard Template Library |
|
- STL Containers
- Parameters Used in Container Classes
- The Vector Class
- STL Algorithms
- Use of Libraries
|
|
|
|
Student Testimonials |
"Great class! The instructor did a WONDERFUL job - was very knowledgeable, engaging, and helpful. Great teacher, one of the best I’ve had. The class was very well laid out -I was skeptical that we’d be able to cover so much ground, but we received valuable, in-depth training on each section."
– Richard
|
|
"This is the best training class I ever had! This instructor obviously has significant practical experience and it shows. The pace of the class was very good and it kept my attention."
– Sugumran |
|
"I was very happy with the course. I learned what I wanted to about C++ and the exercises helped reinforce my learning. The instructor was very helpful and having a knowledgeable person to ask questions to was an invaluable resource."
– Kiran Kumar
|