Training

 

 

Popular Courses

Browse Our Free Resources

  • whitepapers
  • whitepapers
  • webinars
  • blogs

Our Locations

Training Centres

Vancouver, BC
Calgary, AB
Edmonton, AB
Toronto, ON
Ottawa, ON
Montreal, QC
Hunt Valley
Columbia

locations map

Calgary

550 6th Av SW
Suite 475
Calgary, AB
T2P 0S2

Toronto

821A Bloor Street West
Toronto, ON
M6G 1M1

Vancouver

409 Granville St
Suite 902
Vancouver, BC
V6C 1T2

U.S. Office

436 York Road
Suite 1
Jenkintown, PA
19046

Other Locations

Dallas, TX
Miami, FL

Home > Training > C / C++ > Advanced C++ Programming Training

Advanced C++ Programming Training

Course#: WA1080

This course broadens the skills of a C++ language programmer by examining sophisticated C++ concepts such as templates, exceptions, memory management, advanced inheritance issues, disambiguation of overloaded functions, private and protected inheritance, binary i/o and class libraries.

Objectives
  At the end of this course, students will be able to:
  • Decide between global functions, friend functions and member functions
  • Code their own memory management routines by overloading operators new and delete
  • Write classes and functions with parameterized types
  • Understand and handle exceptions in C++ programs
  • Disambiguate data and functions using multiple inheritance
  • Understand the difference between various kinds of inheritance
  • Use pointers to class member functions
  • Understand the C++ mechanism to resolve overloaded functions
Topics
 
  • A Review
  • Parameterized Types - Templates
  • Relations of All Kinds
  • Multiple Inheritance
  • Data Structures
  • Function Pointers
  • Exceptions
  • The C++ Standard Template Library
  • Disambiguation
  • File I/O
  • Miscellaneous Topics
Audience
  Anybody who has been programming in C++ and wishes to enhance their knowledge of the language.
Prerequisites
  Students should have completed the Introduction to C++ Programming course or have equivalent knowledge.
Duration
  Five days.

Outline of WA1080 Advanced C++ Programming Training

  1. What You Should Already Know - A Review

  • Rationale for a new programming paradigm
  • The language of Object Orientation
  • A typical C++ class - a string class
  • Issues regarding member functions
    • member vs non member function
    • friend vs non friend
    • functions - returning references
    • Why does operator= return a reference?
  • Relationships
  • Simple C++ I/O
  • The uses of const

  2. Parameterized Types - Templates

  • Templates
  • Overloading functions
  • Template functions
  • Specializing a template function
  • Disambiguation under specialization
  • Template classes
  • An array template class
  • Instantiating a template class object
  • Rules for templates
  • Non member function w/ a template argument
  • Friends of template classes
  • Templates with multiple type parameters
  • Comments regarding templates

  3. Relations of All Kinds  

  • Uses of Member Initialization Lists
  • Initialization lists under composition
  • Initialization lists under inheritance
  • Initialization lists w/ Multiple Inheritance (MI)
  • Initialization with MI and composition
  • Efficiency
  • operator= and composition
  • Constructors and composition
  • What is not inherited?
  • operator=, construction, and inheritance
  • Designing for inheritance
  • Public inheritance
    • Simple inheritance
    • Virtual functions
    • A shape class hierarchy
    • Polymorphism
    • Pure virtual functions
    • Virtual destructors
    • Abstract base classes
  • Private inheritance
  • Private inheritance vs composition
  • Using relationships
  • Associations

  4. Multiple Inheritance

  • Multiple inheritance
  • Ambiguities
  • Removing ambiguities
  • virtual base classes
  • virtual base classes and the dominance rule
  • Member initialization lists with MI
  • operator= and MI
  • Designing for inheritance

  5. Data Structures  

  • Introduction
  • A simple List
  • Implementation of the list functions
  • Layering type safe classes upon List
  • A template List class
  • Iterators
  • A template iterator
  • Stack and Queue classes
  • A derived template array class

  6. Function Pointers

  • Why have function pointers?
  • Passing functions as arguments
  • Registering functions
  • Callback functions
  • A class with a callback object
  • Registration of exceptions handlers

  7. Exceptions 

  • What are exceptions?
  • Traditional approaches to error handling
  • try, catch, and throw
  • A simple exception handler
  • Multiple catch blocks
  • The exception specification list
  • Rethrowing an exception
  • Cleanup
  • Exception matching
  • Inheritance and exceptions
  • Resource allocation
  • Constructors and exceptions
  • Destructors and exceptions
  • Catch by reference
  • Standard exceptions

  8. The C++ Standard Template Library  

  • History and evolution
  • New features
  • The Standard Template Library
  • STL Components
  • Iterators
  • Example: vector
  • Example: list
  • Example: set
  • Example: map
  • Example: find
  • Example: merge
  • Example: accumulate
  • Function objects
  • Adaptors

  9. Disambiguation

  • Conversion
  • int Conversions
  • float
  • Arithmetic and pointer conversions
  • Inheritance based conversion
  • Overloaded functions
  • Exact match
  • Match with promotion
  • Match with standard conversion
  • User defined conversion
  • Constructors as conversion operators
  • Ambiguities

  10. File I/O

  • Introduction
  • Error checking
  • Overloading << and >>
  • Formatted I/O
  • Disk files
  • Examples of seekg, tellg, and close
  • Reading and writing objects to the disk
  • Internal transmission of data
  • A larger I/O example: Spell checker
  • Treating a file as an array

  11. Miscellaneous Topics

  • New features in the standard C++ language
  • Namespaces
  • Use counts
  • Run Time Type Identification
  • New casts
  • Overloading operator new and delete
  • How virtual functions are implemented
  • Having a limited number of objects
  • Smart pointers
We regularly offer classes in these and other cities. Atlanta, Austin, Baltimore, Calgary, Chicago, Cleveland, Dallas, Denver, Detroit, Houston, Jacksonville, Miami, Montreal, New York City, Orlando, Ottawa, Philadelphia, Phoenix, Pittsburgh, Seattle, Toronto, Vancouver, Washington DC.
*Your name:

*Your e-mail:

*Phone:

*Company name:

Additional notes:

We have received your message. A sales representative will contact you soon.

Thank you!.

more details
buy this course

Register for a courseware sample

It's simple, and free.

 

Thank You!

You will receive an email shortly containing a link to download the requested sample of the labs for this course.