Course Outline
Introduction and Overview Course Information
Relating C, C++, Java, and C#
The in-class development environment
Other development environments
C++ Programming Building Blocks
The main function and standard I/O
- Displaying values and strings to cout
- Reading values from cin
- Formatting with stream manipulators
Objects, constants, and references
- Declaring and initializing variables
- Utilizing C++ 11/14 new keywords
- Integer and floating-point data types
- Performing calculations and displaying results
- Utilizing references for efficiency and constants for safety
Defining and calling functions
- Passing arguments to functions and returning values from functions
- Call-by-value vs. call-by-reference vs. call-by-address
- Scope, duration, and initial values variables
Decisions, loops, and logic
- Making decisions with if/else
- bool vs. int logical values
- if/else statement "chains"
- Performing loops with while and for
- Implementing C++ range-based for loops
- Equality, relational, and logical operators
Arrays, pointers, and strings
- Declaring and using arrays and pointers
- Storing strings in character arrays
- Accessing array elements via pointers
- Pointers vs. references
- Standard string class and functions
Defining C++ Classes and Objects
Encapsulating higher-level data types
- Public member functions and private data members
- Protected class members
- Constructors and destructors
- Self-reference: the this pointer
- The class member operator (::)
Declaring, accessing, and modifying objects
- Manipulating arrays of objects, pointers to objects and references to objects
- Invoking member functions
- const member functions
- Passing objects by value and by reference
Overloading and templates
- Simplifying class interfaces
- Function signatures
- Overloading assignment (=) and insertion (\<\<)
- friend functions and classes
- Explicit copy/move construction
- Avoiding default assignment and copy construction
- Utilizing STL templates to define families of classes
Separating interfaces and implementations
- How separation supports code reuse
- Building header files and code files
Extending Classes via Inheritance
Deriving new classes from existing classes
- Construction and destruction of derived objects
- Reusability via incremental extensions
- Base classes and derived classes
Utilizing polymorphic functions
- Overriding virtual base-class member functions in derived classes
- Runtime lookup of functions through base-class pointers and references
Managing dynamic data
- Allocating and deallocating memory with new and delete
- Handling errors with try and catch
- Avoiding memory leaks
- Utilizing lambdas and smart pointers
Standards and Portability
- Applicability to Windows and UNIX/Linux
- ANSI/ISO C++ 11/14 and evolving standards
Requirements
a:0:{}
Testimonials (3)
Detailed explanation, re-iteration of points in a quite subtle way that really drove the knowledge home very well. Rod's willingness to double-check the odd obscure question that we rasied, to be sure that his answers were 100% right. Also, his interest in discussing the pros & cons of alternate coding styles so that we learnt not only how to use C++ in our intended way, but why it should be done that way.
Nick Dillon - cellxica Ltd
Course - Using C++ in Embedded Systems - Applying C++11/C++14
Experience sharing, it's teacher's know-how and valuable.
Carey Fan - Logitech
Course - C/C++ Secure Coding
The online-ness of it meant that we could save a lot of time. Much appreciated. Also, the fact that the trainer knew both c# and Cpp was a huge help since he could explain everything through knowledge we already possessed.