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
Testimonials (3)
The fact that I have learnt a new approach for writing unit tests is the part I liked most about the training. I also liked the free talk we had, the fact that we debated certain topics, I liked the team work we had, it made us analyse from a different perspective the requirements of user stories and I also appreciated the intervention of the trainer that suggested us different solutions when we were stuck on taking some decisions.
Crina-Maria Rosu - ACCENTURE
Course - Agile and TDD with C
An interesting and broad scope
Maciej Perkowski - Nordic Semiconductor
Course - Advanced C Programming
Great concepts with knowledge of practical applications