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 (5)
General course information
Paulo Gouveia - EID
Course - C/C++ Secure Coding
Enjoyed the flexibility and variety of topics, the combination of trainings and exercises meant that I could apply what I'd learnt straight away. I also enjoyed the projects on the last day to bring everything together.
Luca Ricagni - Rockwell Collins UK Limited
Course - Advanced C++
I liked being submerged into the C++ language for 5 days - not interrupted by regular work - in a row a lot ... Personally not as experienced in C++ as my colleagues, I decided to join this course to take a deep dive. The dive triggered me hugely to learn more ... which is exactly what I wanted to achieve. I appreciated the expertise knowledge of the trainer - and that of my colleagues. The fact that topics were very quickly touched and not addressed in detail, is what I expect from an advanced course. Sometimes too quick for me to follow (but that's a known and accepted drawback from my joining this course :-)) ... but on the other hand provided me with a fairly complete overview of the subtleties of the language. Thanks a lot for presenting a course in this way! Most appreciated!!!
Jan Grauwen - Septentrio N.V.
Course - Advanced C++ Software Design
Interactivity, time for self-contained programming. I learn easier if I have the chance to find out the answer and not just telling me it. It was also a very good thing that the training was well-planned, we kept coffee pauses and the training did not lose my attention. The trainer had very deep knowledge in C++, we felt we could ask anything.
Barna Szecsi - GIS Europe SE
Course - C++ for Embedded Systems
The details on how compiler behaves depending on to the syntax usage. The "Quiz" sections are very stimulating