Course Overview
This course explores the key features of the C++ programming language and object-oriented concepts. The course starts with a review of the key language features of C++, followed by essential object-oriented concepts. A complete sequence of working samples are used to demonstrate concepts presented in the course guide. Lab exercises are provided with detailed instructions and working solutions. If you want to learn C++ to create applications on the job or on your own, this course will help you understand how C++ works, and immediately be more productive.
Key Learning Areas
- Learn the basic structural elements of a C++ program
- Learn a disciplined approach to program design
- Learn to compose types and implement encapsulation
- Learn the role of copy constructors
- Learn techniques for handling memory allocation errors
- Learn how to model your problem domain
- Learn the features of virtual functions and dynamic binding
- And much more…
Course Outline
Language Primer & OO Concepts
- Examine the basic syntax and language constructs of a C++ program.
- Learn how the object model provides the framework for abstraction, encapsulation and instantiation.
Classes in C++
- Use member data to represent data encapsulated in a
- Use member functions to implement class' operations and provide access to its data.
- Use the 'this' pointer to refer to the invoking object.
- Implement an abstract data type using C++ classes.
- Organize code for C++ classes into code files and header files.
- Write simple test programs to exercise each member function of a class.
Functions in C++
- Use function prototypes in your code.
- Take advantage of C++ support for strong type checking.
- Make use of automatic conversion of parameters in function calls when there is a prototype.
- Use inline functions.
- Use default arguments.
- Learn the benefits of overloading.
- Learn the standard C/C++ call by value mechanism for passing parameters in functions calls.
Constructors and Destructors
- Learn the use and benefit of constructors.
- Use multiple constructors in a class, including the default constructor.
- Learn the use and benefit of destructors.
- Simplify a class by using default arguments in a constructor.
Memory Management
- Learn the use of static, automatic (stack) and heap memory.
- Use new and delete to manage memory.
- Provide constructors and destructors to support dynamic objects.
- Discuss techniques for handling memory allocation errors.
- Hide details of memory management in a class.
Argument Passing
- Use reference declarations to alias variables.
- Use references in argument passing.
- Learn the role of copy constructors.
- Use constant types in your programs.
Operator Overloading
- Use overloaded operators in your code.
- Learn the semantics of assignment.
- Distinguish between initialization and assignment.
- Overload the assignment operator.
- Implement type conversions by overloading cast operators and by constructors.
Access Control
- Use C++ scoping facilities.
- Use constants through enumeration types and through the const keyword.
- Define "static members" and use them in your code.
- Control access to member data and functions through public, private, and protected access specifiers.
- Define "friend" function and explain how a friend function differs from a member function.
Inheritance
- Use inheritance to model your problem domain and achieve greater code reuse.
- Use C++ class derivation to implement inheritance.
- Use public, protected and private to control access to class members.
- Use an initialization list for proper base class initialization and embedded member initialization.
- Determine order of invocation of constructors and destructors.
- Distinguish between use of inheritance and composition.
Polymorphism and Virtual Functions
- Learn the features of virtual functions and dynamic binding.
- Learn pointer conversion in C++ inheritance and use pointers in connection with virtual functions.
- Use polymorphism in C++ to write better structured, more maintainable code.
- Provide virtual destructors for classes using virtual functions.
- Specify abstract classes using pure virtual functions.
Who Benefits
To gain the most benefit from this course, students should have some experience programming in C.
Prerequisites
Experience programming in a modern object-oriented language such as Java or C# is also sufficient.