Overview
C and C++ are the fundamental languages that help programmers every step of the way. Proficiency in these languages enables programmers to catch on to newer programming languages with a lot more ease. Cognixia’s C and C++ programming course focuses on teaching participants the basic as well as advanced concepts of C/C++. It covers basic programming techniques, use of various statements, pointers, dynamic memory allocation, object-oriented programming concepts, polymorphism, inheritance, encapsulation, I/O functions, GUI programming, and even network programming.
What You'll Learn
- Overview of C and C++
- Functions in C/C++
- Advantages of the Dynamic Memory Management
- Managing Inheritances
- Object oriented programming
- Working with the String class
- Program structures
- Polymorphism and Overridden methods
- Classes in C/C++
- Streaming I/O
Curriculum
- Implementing basic OO design
- Implementing classes
- New keywords in C++ 11,14,17
- RAII – Modern memory management in C++ – overview
- Copy vs Move semantics
- Namespaces
- General Purpose Functions
- Function Templates
- Template Parameters
- Template Parameter Conversion
- Function Template Problem
- Generic Programming
- General Purpose Classes
- Class Templates
- Class Template Instantiation
- Non-Type Parameter
- C++ Containers overview
- Variadic Templates
- The handle/body (Bridge) pattern
- Using strings effectively
- Smart Pointers
- Move constructor in depth
- Other
features
- Base Class Initializer List
- Composition
- Member Initialization List
- Order of Initialization
- Inheritance vs. Composition
- Interfaces
- Polymorphism
- Chaining Constructors
- Inheriting Constructors
- Exception Handling
- Try and catch
- Exception Flow of Control
- Context and Stack Unwinding
- Handling Exceptions in best Context
- Benefits of Exception Handling
- Unhandled Exceptions
- Clean Up
- Multiple Catch Handlers
- What is overload-able?
- Why overload operators?
- Functors
- Unit testing – Quick Overview
- Unit testing in C++
- Introduction to
- Overview
- The IoC pattern
- Dependency Injection
- Functions as objects
- IoC via interface
- Functors
- IoC with Functors
- Implementing Functors
- Function Pointers
- IoC with Function Pointers
- Lambda Expressions
- Lambda Syntax
- IoC with Lambdas
- Runtime Type and Polymorphism
- type_info Class
- typeid Operator
- Compiler Options
- Safe Pointer Conversions
- Dynamic Cast
- New C++ Style Casts
- Static Cast
- Reinterpret Cast
- Const Cast
- Vectors
- Vector.cpp
- Vector Operations
- Typedefs
- Deques
- deque as Stack
- deque Functionality
- Lists
- Generic Programming
- Tradeoff with Lists
- List Memory Allocation
- list Functionality
- Associate Containers
- Sets
- Sets with User Defined Objects
- Multisets (Bags)
- Maps
- Multimaps
- Functional Programming with Containers
- Pointers
- Template Version
- String Version
- A Generalization of Pointers
- STL Iterators
- Input Iterators
- Output Iterators
- Forward Iterators
- Bidirectional Iterators
- Random Access Iterators
- Overview Threads
- Starting Threads
- Managing threads
- Overview of Tasks
- Tasks
- async
- Future & Promise
Who should attend
- Software designers
- Software developers
- Software engineers
- Android developers
- Firmware developers
- Verification engineers
- Embedded software engineers
- Openstack engineers