Modern Robust C++ Design Training in Ireland

  • Learn via: Classroom / Virtual Classroom / Online
  • Duration: 5 Days
  • Level: Expert
  • Price: From €6,656+VAT
We can host this training at your preferred location. Contact us!

C++ is the standard language for implementing object-oriented designs where performance is a priority. Although long-term language stability is an important feature of C++ , it has nevertheless continued to be developed. C++ 11 introduced a number of significant language and library features to improve safety and performance which have in turn been further developed within C++ 14 and 17. These features allow us to more precisely express concepts from a design directly in code. Although these changes could be considered incremental, in fact they allow and encourage a whole new approach to programming.

This course sets out from the beginning to embrace this new approach making full use of the facilities for writing well encapsulated robust code which is at the same time supremely efficient.

The course is written from a developers rather than an academics perspective, following the design of a simple library and introducing language and library features as they are encountered. In the process virtually all language features are explored and most of the standard library. In addition a variety of design patterns are examined and good practices are emphasised.

Although the course makes use of C++ 11/14/17 features throughout, most of the material is useful and relevant to pre C++ 11 users.

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.

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 avoid algorithmic difficulties so that delegates can concentrate on specific C++ features.

This is not a course for beginners. It covers a great deal of material and those who do not meet the course prerequisites will find the course moves too quickly.

  • You must have solid recent experience of writing C++ .
  • You must have a good appreciation of object-oriented principles.
  • You must be comfortable with new and delete operators, class definitions and member functions, constructors and destructors, pointers, references, virtual functions, function overloading, specialisation, inheritance and polymorphism.
  • Ideally, you will have attended one of our C++ programming courses and have been using C++ solidly for at least six months.

Please note: Before attending this class delegates must have a Microsoft account (signing up one is free). The instructions on how to set up a Microsoft account can be found here.

At the end of this course you will be able to:

  • Describe the modern approach to programming that C++ 11/14/17 facilitates.
  • Describe and use advanced techniques for safe copying and forwarding
  • Describe and use template techniques for efficient generic coding
  • Understand portability issues and how to resolve them.
  • Make appropriate use of operator overloading.
  • Understand how to write robust constructors.
  • Use C++ exceptions appropriately in libraries and in large programs.
  • Understand and resolve issues with global variables.
  • Understand the appropriate use of constexpr, volatile, unions and bitfields.
  • Understand and use the library facilities for multi-threading
  • Understand the issues of resource ownership and the use of RAII and smart pointers to make association explicit and safe.
  • Describe advanced inheritance techniques, such as private inheritance, multiple inheritance, the template method pattern and down-casting.
  • Take full advantage of the standard C++ library
  • Make good use of the standard container classes and iterators
  • Understand and use variety of OO call-back mechanisms

Why C++ ?

  • Object-Oriented Programming
  • C++ language design aims
  • Language distinctives
  • Comparison with C
  • Why use C++

Starting Well

  • Version Control
  • Documenting Code
  • Static Analysis
  • Unit Testing
  • 64-bit issues
  • C/C library
  • Precompiled Headers

Robust Design

  • Single Responsibility Principle
  • Reducing Complexity
  • Encapsulation
  • Keeping header files clean
  • Conditional Compilation
  • Coding Style
  • C++ 11 game-changers

Const, Copying and Conversions

  • Const consistency
  • Logical vs physical const-ness and the mutable keyword
  • The staticcast, dynamiccast, constcast and reinterpretcast keyword casts
  • Converting constructors and the explicit keyword
  • User defined conversion operators
  • Copy construction and assignment
  • Efficiency - Copy Elision and Return Value Optimisation

Move and Forward

  • R-Value Reference
  • Move rather than Copy
  • Compiler Synthesised Member Functions
  • Rule of Three / Five / Zero
  • std::swap, std::move and std::forward
  • Perfect forwarding

Strong Primitive Types

  • Mission statement for a new design
  • Standard libraries for Time and Date
  • Creating strongly typed primitive types
  • Class Definition Organisation

Operator Overloading

  • Deriving operators from a sub-set
  • Global functions for binary operators
  • Templated operators
  • Template Parameter Deduction
  • Template Functions with non-argument type parameters
  • Template Function Overloading and specialisation
  • Template Instantiation and linkage
  • Namespaces

Portable Integers and Robust Constructors

  • Language specification for integers
  • Discovering int size
  • Specifying int size
  • Template Classes
  • Template Class Specialisation and Aliasing
  • Single Point Of Maintenance for Constructors
  • Argument Range Checking
  • Custom Literals


Exception Handling

  • Classifying and handling exceptions
  • Catching exceptions
  • Throwing exceptions
  • The standard exception hierarchy
  • Uncaught exceptions
  • Resource acquisition and release
  • Resource Acquisition is Initialisation idiom
  • Exceptions and constructors
  • Copy Before Release idiom
  • Exceptions and destructors
  • Commit or Rollback idiom
  • STL exception guarantees

Bitfields and Unions

  • Bitfields
  • Anonymous Union
  • Endedness and Bitfield Portability
  • Creating a Portable Bitfield
  • Template Parameter Checking
  • Type Traits
  • Static_Assert

Delegation Techniques

  • Delegation principles
  • Composition
  • Adapter patterns
  • Inheritance
  • Multiple Inheritance
  • Name Hiding
  • Virtual inheritance
  • Interface Classes
  • Nested Classes

Statics and Globals

  • Storage Class
  • static class members
  • Stateless Classes
  • Static Local Variables
  • Global and local access
  • Problems with Global Variables
  • Safe Global Variables
  • The Singleton pattern
  • Alternatives to Singleton

Volatile Variables

  • Memory Mapped IO
  • Volatile
  • Placement New
  • New and Delete operators
  • Placing objects in memory
  • Allocating without exceptions

Multithreading Techniques

  • Multithreading concepts
  • Creating multiple threads in C++
  • Creating and managing locks
  • Exception-Safe Lock Management
  • Simultaneous Reads with a shared mutex
  • Thread-Safe Assignment
  • Atomic variables
  • Condition variables
  • Asynchronous functions and futures
  • Exceptions in threads

Polymorphism

  • Abstract Base Classes
  • Benefits and Cost of Polymorphism
  • Template Method Pattern
  • Pure Virtual Functions
  • Smart References and their uses
  • Templated Outward Conversions
  • The Curiously Recurring Template Pattern
  • Downcasting

Safe Association

  • Association for Independent Lifetimes
  • Structured Lifetimes
  • Unique_ptr
  • Wrapping new
  • 'Pointer' Function Parameters
  • Shared_ptr
  • Weak_ptr
  • Safe Copying with Association

Design Patterns

  • Composite
  • Cheshire Cat
  • Bridge
  • Null Object
  • Proxy
  • Lazy Initialisation
  • Dependency Inversion
  • Factory
  • Dependency Injection

Functional Abstraction

  • Events and callbacks
  • The Command pattern
  • Functor Commands
  • Lambda, an alternatives to functors
  • Wrapping Traditional callbacks
  • Member function pointers
  • Function pointer adapters

Containers

  • STL Container Classes
  • Container Selection
  • Container Functions
  • Special List and Map/Set functions
  • Iterators
  • Algorithms
  • Modifying Sort



Contact us for more detail about our trainings and for all other enquiries!

Upcoming Trainings

Join our public courses in our Ireland facilities. Private class trainings will be organized at the location of your preference, according to your schedule.

Classroom / Virtual Classroom
07 January 2025
Dublin, Belfast, Cork
5 Days
Classroom / Virtual Classroom
13 January 2025
Dublin, Belfast, Cork
5 Days
Classroom / Virtual Classroom
07 January 2025
Dublin, Belfast, Cork
5 Days
Classroom / Virtual Classroom
13 January 2025
Dublin, Belfast, Cork
5 Days
Classroom / Virtual Classroom
18 March 2025
Dublin, Belfast, Cork
5 Days
Classroom / Virtual Classroom
05 April 2025
Dublin, Belfast, Cork
5 Days
Classroom / Virtual Classroom
09 April 2025
Dublin, Belfast, Cork
5 Days
Classroom / Virtual Classroom
18 March 2025
Dublin, Belfast, Cork
5 Days
Modern Robust C++ Design Training Course in Ireland

Ireland is an island nation located in northwestern Europe. Its history is shaped by its position as a former British colony, as well as its rich cultural heritage, which includes a long tradition of storytelling, music, and dance. Ireland gained independence from Britain in 1922 and has since become a modern, prosperous country.

Today, Ireland is known for its beautiful landscapes, rich cultural heritage, and friendly people. Popular cities within the country include Dublin, Cork, and Galway, each with their own unique charm and character. The population of Ireland is estimated to be around 5 million people, with English and Irish being the two official languages. Ireland is also home to a vibrant tech sector, with many global tech companies choosing to locate their European headquarters in Dublin. With its mix of tradition and modernity, Ireland is a popular destination for visitors from all over the world.

Choose from our extensive selection of IT courses, covering programming, data analytics, software development, business skills, cloud computing, cybersecurity, project management. Our highly skilled instructors will deliver hands-on training and valuable insights at a location of your choice within Ireland.
Dublin is considered the technology center of Ireland. It is home to a thriving tech industry, with many global tech giants such as Google, Facebook, and Microsoft having their European headquarters in the city. Dublin's reputation as a tech hub is due in part to its favorable business environment, with a low corporate tax rate and a skilled workforce that is well-educated in science, technology, engineering, and mathematics (STEM) fields.

Dublin has also been proactive in supporting the growth of the technology sector, with initiatives such as the Dublin Commissioner for Startups and the Dublin Tech Summit, an annual event that brings together technology leaders from around the world.
We are one of the best! Bilginç IT Academy offers online, live virtual and classroom trainings in Ireland. We are delighted to assist market leaders as they shape the ever-changing and evolving digital landscape. We adapt new generation training methodologies to Ireland's needs. Enroll now and take your tech team to new heights.
Bilginç IT Academy’s coding classes in Ireland can help your team reach its full potential. Our courses, which are intended for tech firm employees, provide hands-on training in the most recent coding languages and frameworks, giving your team the knowledge they need to advance your company. Take your tech team to greater levels by enrolling right away.
By using this website you agree to let us use cookies. For further information about our use of cookies, check out our Cookie Policy.