- Duration / Course length: Upto 24 Hours Start now
- Course delivery: This course is delivered in video format
Course details
24 hours real time session + 10 hours monitored hands-on
Ideal For: The course is intermediate to advanced in proficiency. It is suitable for the following:
- Programmers new in the area of Software Engineering that uses C++
- Developers embarking on projects using C++‐based techniques for their projects
- Professionals looking forward to upgrade the knowledge to apply skills
Post course benefits: Lifetime access to online repository, Mock interview support, project support
Recruitment support: eAgeIT will propose candidates of this program for any open opportunities with its client portfolio. We do not guarantee placement. This will be purely merit based support.
Course Objectives:
- To understand C++ internals with proven examples
- Would be able to apply C++ skills to construct code for their project
- Get an insight to develop C++ software in a systematic manner
- Would be able to user C++ 11 & 14 & 17 extensions in software
- Would be able to write secured code that cannot be easily exploited
- Get an understanding of robust software design in C++
Pre-Requisites:
- Delegates are desired to be aware of OOPS principals but it is not a mandatory
Detailed Coverage:
C++ Introduction Timeline
- Features of C++ (Revision)
- Goals for C++ and TR11/14/17
- Monolithic build, scope, and translations to executables
- Std 11/14/17 switchs and __cplusplus
- Separately Translated Program and monolithic builds
- Procedural Programming
- Object-Oriented Programming
- MDD, UML view, OOAD, SOLID
- Relationships and Responsibility in OOPS
- ;Introduction to C++ Specific Features
- Data Declaration and scope, Functions in C++: inline
- default argument, Overloading, References, Namespaces
- Inbuilt support for object oriented features
- RTTI, exception handling, templates
- Large-Scale Projects Are More Susceptible to Name Clashes
- Koenig Lookup
- Namespace Aliases
- Namespace Utilization Policy in Large-Scale Projects
- Namespaces and Version Control
- Scope Resolution Operator Should Not Be Used to Designate Global Names
- Standard Headers Names
- Restrictions on Namespaces
- Namespace std Can Not Be Modified
- User-Defined new and delete Cannot Be Declared in a Namespace.
- Representing Objects in C++
- The initializations in C++ using constructor
- OAD: C++ Object Implementation
- How a compiler interprets Object
- Special member functions
- Constructors,Destructors
- Copy and move Constructor
- Assignment move in Operator
- Blocking Object Copying
- Designing a class around mutable, logical const
- Compiler Synthesized Constructor & Destructor
- Deep copy v/s Shallow copy
- explicit constructor
- Copy Constructor v/s Assignment operator
- Initialization v/s Assignment
- Order of Initialization
- Aggregate initialization
- Static data
- Static methods
- Object instance control and sharing
- A minimal pattern study: singleton and its variance
- lmitations, and extensions
- Types of Storage
- POD (Plain Old Data) and non-POD Objects
- The Lifetime of a POD Object
- The Lifetime of a non-POD Object
- malloc() and free() Versus new and delete
- new and delete
- Allocating and Deallocating Arrays Using new[] anddelete[]
- Friend and classes
- Object communication
- Friend functions, Friend classes
- Const objects and const member functions
- Object composition & destruction mechanism
- Boundary classes & object interfaces
- The operator function and its interpretation object expressions
- Using member functions & friend functions - when to use what
- Implicit/explicit overloading mechanism
- Returning objects & assignment operator
- Overloading new & delete operators
- operator == , operator [ ], operator ( ), operator ->, operator comma (,)
- CScope ,Cflow
- Example frameworks that are built on inheritance: QT, WX Widget
- Specialization and Derived Classes
- Generalization and Abstract class, interfaces
- Types of inheritance
- Single level, multi-level, multiple, hierarchical, hybrid
- Inheritance - is it allocation or accessibility
- The protected access specifier
- Inheritance in private, protected & public mode
- Constructors & destructors in a derived class
- Multiple inheritance
- Virtual Base class Invoking base class constructors
- Why a constructor is not inherited
- Nested classes & Containership
- Pointers to Class Members
- Base class pointers & derived class objects
- Virtual functions & base class pointers
- Virtual functions & base class reference
- Dynamic Binding v/s Early Binding
- Pure virtual functions
- Virtual destructors
- Abstract classes & applications
- Runtime Polymorphism & RTTI
- typeid & type_info
- dynamic_cast, const_cast, static_cast, reinterpret_cast
- Implicit instantiation
- Explicit instantiation
- Specialization: complete and partial
- Function Templates
- Class Templates
- Declaration of a Class Template
- Instantiation and Specialization
- Explicit Specialization of a Class Template
- Specializations of Class Template Functions
- Template Arguments
- Default Type Arguments
- Static Data Members
- Friendship
- Function Templates
- Performance Considerations
- Type Equivalence
- Avoiding Unnecessary Instantiations
- Explicit Template Instantiation
- Interaction with Other Language Feature
- Containers, Algorithms, and iterators
- Using STL/STD Containers
- Using Algorithm and iterators with STD
- Exploring various containers, iterators and algorithms
- Vector, List, Map, Set
- Array, tuple, unordered_map, unordered_set
- Initialization, Initializer lists
- Uniform initialization
- Move Semantics
- Lambda
- Auto, decltype, trailing return type, auto vs. decltype
- Range-based for loop ,static_assert, constexpr functions/data, Inline namespaces
- STD Threads Passing, arguments to threads
- Data lifetime considerations, Synchronization with mutexes and locking
- Acquiring multiple locks, mutex types
- Returning values from threads using futures and async, Launch policies
- Condition variables, Thread-local storage
Updated on 29 September, 2019
Eligibility / Requirements
The course is intermediate to advanced in proficiency. It is suitable for the following:
>Programmers new in the area of Software Engineering that uses C++
>Developers embarking on projects using C++‐based techniques for their projects
>Professionals looking forward to upgrade the knowledge to apply skills.
Delegates are desired to be aware of OOPS principals but it is not a mandatory
Job roles this course is suitable for:
Software Developer , Senior Software Developer , Software Development Team LeaderAbout eAge Technologies
eAge Technologies India Pvt Ltd is a Premium IT Consulting & Training company. Headquartered at Bangalore and with a mission of “creating better people”, we strive at bridging the gap between industry needs and employee/aspirant skill sets. We do this with the help of our large repository of trainer partners.
Our services are provided in the following areas:
- Corporate or B2b training: eAge offers IT Training for corporate in technologies such as IoT, Embedded, Internet, Cloud Computing, Big Data, Project Management, Process and Quality Implementation & Mobility.
- Online training: Catering to aspirants looking at career shifts, knowledge upgrades and access to immersive and industry relevant course content; we provide an online instructor led training program. This program is a unique customized and scheduled training program and has been hugely successful in its acceptance.
- Consulting: eAge also offers consulting services in Software Development and IT Maintenance in IOT, Embedded and Business Enterprise domain. Our R&D center has built some world class solutions around Embedded, Machine to Machine(M2M) Technologies. Our product, Asset Tracking System (ATS) is an energy monitoring system that aims to reduce the OPEX for any organization and is awarded best solution in the startup event held at Bangalore 2013.