Advanced C++ Development
Starting dates and places
Description
Overview
C++ is the standard language for implementing object-oriented designs, but although based on C, C++ introduces many subtle syntactic and design issues. For developers whose C experience goes back further, many of the changes as a result of a series of standardisations make standard C++ a very different programming environment.
This course will keep the audience abreast of these changes. It covers four main areas: new and advanced language features; using the standard library; implementing object-oriented concepts and patterns in C++; effective C++ programming techniques and idioms. It also suggests ways to maximise efficiency, code quality, and reusability.
Delegates will gain a gre…
Frequently asked questions
There are no frequently asked questions yet. If you have any more questions or need help, contact our customer service.
Overview
C++ is the standard language for implementing object-oriented
designs, but although based on C, C++ introduces many subtle
syntactic and design issues. For developers whose C experience goes
back further, many of the changes as a result of a series of
standardisations make standard C++ a very different programming
environment.
This course will keep the audience abreast of these changes. It
covers four main areas: new and advanced language features; using
the standard library; implementing object-oriented concepts and
patterns in C++; effective C++ programming techniques and idioms.
It also suggests ways to maximise efficiency, code quality, and
reusability.
Delegates will gain a greater understanding of the capabilities
and potential pitfalls of the C++ language and will be more able to
use C++ language features to write robust, quality software and you
will also have a good grounding to make the best use of specific
component technologies, such as COM and CORBA.
This a comprehensive five-day course with a combination of lectures
and practical sessions for each chapter to reinforce the topics
covered throughout the course. The practicals use code skeletons,
so that you can concentrate on specific C++ features.
The course includes coverage of the C++11 Standard
Enhancements.
Prerequisites
- You must have solid and genuine experience of C++ including class definitions and member functions, constructors and destructors, references, virtual functions and new and delete operators.
- Ideally, you will have attended one of our C++ programming courses and have been using C++ solidly for at least six months. You should also have a solid appreciation of object-oriented principles
Delegates will learn how to
- Describe some of the enhancements which have come with the latest C++11 standard.
- Describe advanced inheritance issues, such as private inheritance, multiple inheritance, and virtual base classes
- Use advanced C++ language features and programming techniques, such as Run-Time Type Identification (RTTI), smart pointers and delegation
- Use different memory management techniques and strategies to customise and optimise memory usage in a C++ program
- Design, implement and use template functions and template classes
- Take advantage of the standard C++ library
- Design and use container classes and iterators
- Use C++ exceptions to simplify error handling in large programs
- Describe the concepts of Multi-threading
Course Outline.
Evolution of Standard C++
- ISO C
- ISO C++
- Overview of the standard library
C++11 Language Enhancements
- Changes to the language and syntax
- lambdas, r-values and move constructor
- additions to the standard library
C++ and OO Refresher
- Abstraction and encapsulation
- Composition and association
- Inheritance and polymorphism
- Patterns and idioms
Copying and Conversions
- The staticcast, dynamiccast, constcast and reinterpretcast keyword casts
- Logical vs physical const-ness and the mutable keyword
- Converting constructors and the explicit keyword
- User defined conversion operators
- Copy construction and assignment
Scope
- Static class members
- The Singleton pattern
- Nested classes
- Nested class forward declarations
- The Cheshire Cat idiom
- Namespaces
Delegation Techniques
- The Object Adapter pattern
- The Null Object Pattern
- The Proxy pattern
- Overloading the member access operator
- Smart pointers
- The Template Method pattern
- Factory objects
Subscripting Techniques
- Overloading the subscript operator
- Overloading with respect to const-ness
- Smart references
- Multi-dimensional subscripting
- Associative containers
Template Functions
- Using and implementing generic algorithms with template functions
- Overloading and specialising template functions
- Template instantiation and linkage
Template Classes
- Using and implementing generic types with templates classes
- Multiple template parameters
- The standard vector, list, pair, and map template classes
Iterators and Algorithms
- The need for Iterators
- The standard library (STL) iterator model
- Generic algorithms using iterators
- STL algorithm pitfalls
- Introduction to function objects
Exception Handling and Safety
- Reviewing Exception handling
- Strategies for handling exceptions
- Resource acquisition idioms for exception safety
- Exceptions in constructors
- Exceptions in destructors
- Exception safe classes
- STL exception safety guarantees
Memory Management
- Object life cycle
- Allocation failure
- Customising memory allocation
- Optimising allocation for a class through caching
- Derivation safe allocation
- Controlling timing of construction and destruction
Reference Counting
- Reference counting shared representation
- Reference counted strings for copy optimisation
- Subscripting issues
- Smart pointers for simple, automatic garbage collection
Inheritance Techniques
- Subtyping vs subclassing
- Abstract and concrete base classes
- Inheritance scoping issues
- Multiple inheritance
- Virtual base classes
- Interface classes
- Mixin classes
- Runtime type information (RTTI)
- Private and protected inheritance
- The Class Adapter pattern
Functional Abstraction
- Traditional callbacks using function pointers
- The Command pattern
- More on function objects
- Member function pointers
Template Techniques
- Templating on precision
- Template adapters
- Default template parameters
- Template specialisation
- Trait classes
- Member templates
- Non-type template parameters
- Optimising template code space
Multithreading Techniques
- Creating multithreaded applications in C++ using the new std::thread class and other related classes new to C++11
- Brief overview of essential threading concepts
- Dealing with interesting issues concerning shared data, using locks, atomic and conditional variables
Share your review
Do you have experience with this course? Submit your review and help other people make the right choice. As a thank you for your effort we will donate £1.- to Stichting Edukans.There are no frequently asked questions yet. If you have any more questions or need help, contact our customer service.