Course Outline
Introduction and Overview Course Information
Understanding the relationship between C, C++, Java, and C#
The in-class development environment
Exploring 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
- Leveraging C++ 11/14 new keywords
- Integer and floating-point data types
- Performing calculations and displaying results
- Using 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 of variables
Decisions, loops, and logic
- Making decisions with if/else
- bool vs. int logical values
- if/else statement "chains"
- Executing 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)
Initially, the trainer's pace seemed a bit too fast for me, but after offering the feedback during the training, he acknowledged it and slowed down the pace without sacrificing any of the lectures. Good rapport with the audience, very friendly and open for discussions.
Alexandru Ostafi - Siemens
Course - Advanced C++ : Practical workshop
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.