Comprehensive C++ teaches the C++ programming language in the context of electronic system design, validation and implementation, where C++ is used both for abstract system-level modelling and for embedded software implementation. It is a direct replacement for a general class in C++ programming, with the added benefit that the syllabus, contextual examples and exercises are tuned to the requirements of the embedded system and System-on-Chip communities.
Comprehensive C++ provides an excellent full scope primer for any of the Doulos SystemC courses, or for anyone wishing to use C++ in the context of electronic system level modelling, hardware-software integration or embedded system implementation.
The workshops are based around carefully designed exercises to reinforce and challenge the extent of learning, and comprise approximately 50% of class time.
Comprehensive C++ is aimed at electronic hardware, software and system-on-chip engineers who need to gain a working knowledge of the C++ language. The course is also suitable as a general introduction to C++ programming, particularly for anyone working in an electronics-related business area or with a background in digital electronics.
Delegates should have had some exposure to the C programming language, in particular a basic level of familiarity with functions, variables, data types, operators, and statements. A good working knowledge of another high-level programming language is an acceptable alternative. No previous knowledge of C++ is required. This course is not suitable as a first course in computer programming.
Please contact Doulos direct to discuss and assess your specific experience against the Pre-requisites.
Doulos Course materials are renowned for being the most comprehensive and user friendly available. Their style, content and coverage is unique in the HDL training world, and has made them sought after resources in their own right. Fees include:
A refresher on basic C syntax • Functions • Control flow • Fundamental types • Literals • Derived types • Operators • Standard libraries
The features added to C by C++ and the ANSI C-1999 standard • const • inline • Stream I/O • Function prototypes • Pass-by-reference • Default arguments • Function and operator overloading
Learn some tricky features often overlooked in C, but necessary for C++ • Scope • Linkage • Linking C and C++ • Namespaces • Static, automatic and dynamic storage • Memory management • new • delete • Arrays • Pointers • Strings
Compilers • Linkers • Loaders • Debuggers • Integrated development environments • Cross-compilers • In-circuit emulation
Introduction to modelling and abstraction • Information hiding • Abstract data types • Classes and objects • Public and private class members • Member functions • Scope resolution
How to ensure that objects are properly initialised, and how to tidy up afterwards • Constructors • Destructors • Copy constructors • Pointers and objects
More features of C++ classes • Friends • Operator overloading • Overloading assignment • this • Static members • Constant objects and members
Learn the principles of object-oriented design • Class relationships • The Unified Modelling Language • Class and object diagrams • Association • Composition • Dependency • Implementing class relationships in C++ • Initialization of class members
Derived classes • Inheritance • Protected members • Casting pointers • Order of initialization
Inheriting common behaviour • Overriding methods • Virtual functions • Polymorphism • Late binding • Virtual destructors • Abstract base classes and pure virtual functions
Single Inheritance • Multiple inheritance • Virtual multiple inheritance • Interfaces • Composition again
The string class • I/O streams • I/O of user-defined types • Manipulators • Buffering • Formatted and unformatted streams
Run-Time Type Identification • Type casts • User-defined conversions • Nested classes • Pointer-to-member
Function templates • Class templates • Template arguments • Template specialization • Building simple data structures using templated and untemplated classes
Error handling • Throwing and catching exceptions • Handlers • Standard exception classes• Preventing memory leakage during exceptions
Concurrency • Threads • Synchronisation • Memory maps • Communicating with peripherals • Meeting external timing constraints • Process scheduling and pre-emption • Using C++ thread classes • Real-time operating systems
Summary of the standard C and C++ libraries • Using container classes, algorithms and iterators from the standard libraries
Brief History of C++ • Maintaining compatibility • Nested templates • Type inference • Range based for-loops • Lambdas • Null pointer • Explicit conversion operators • Overridden and final methods • Defaulted and deleted behavior • Enhanced enumerations • Compile-time assertions • Shared pointers • Better random numbers • Efficient arrays • Unordered sets & maps • Regular expressions • Asynchronous calls & futures • Mutex
Complete an enquiry form and a Doulos representative will get back to you.
Enquiry FormPrice on request