There are three levels to being a master in any programming language.
- Low Level
- Mid Level
- High Level
Low Level
Compared to Java/C#, a confusing moment in C++ is that variables and members of type T actually hold T objects, rather than references to T.
An important role is played by rvalue and lvalue variables. with the new C++ standard (C++11 and beyond). This allows you to write even more efficient code.
Finally, you can’t code complex projects if you are not familiar with Classes and Objects, object construction/destruction procedures, and similar.
Mid Level
More in-depth knowledge of Object-Oriented C++ concepts is a must, knowing how virtual functions work, what is a virtual table pointer (sometimes referred as a vtable, vptr) and how would you describe the difference between static and dynamic polymorphism.
Speaking of static polymorphism, templates come to mind.
Getting to know the templates will come naturally if you will dive deeper into the Standard Template Library, STL. You should know the differences between std:: vector and std:: list, and why iterators are called “random access iterators” for vectors, and “bidirectional iterators” for lists.
High Level
What we should learn in C Plus Plus
- Data Hierarchy
- Memory Concepts
- Algorithms
- Pseudocode
- Control Structures
- Sentinel-Controlled Repeatition
- nested control statements
- Assignment Operators
- Logical Operators
- Different between (==) and (=) Operators
- How to define Class
- How to define function and data members in a class and out of the class
- Function with parameter
- Function prototype and Argument passing
- Reference and reference parameters
- Default arguments
- Utility function
- Reusability concept in the program
- How to use Objects with Constructors
- If statement
- If-else statement
- while statement
- Do-while statement
- Increment and Decrement Operators
- For loop
- Switch statement with Break and continue keywords
- the erase-remove idiom in C++
- Math library
- Standard library
- Storage classes
- Variable Scope rules
- Inline function
- Unary scope resolution operator
- Function overloading
- Function templates
- Recursion
- Declaration of an array using the loop
- Use of bar chart to display array data
- Local and static local arrays
- Range-based statement
- Multidimensional array
- Pointer variable(initialization/declaration)
- Passing references using a pointer
- Nonconstant and constant pointer
- Pointer Expression/Pointer Arithmetic
- Relationship between pointer and array
- Use of string using a pointer
- Class scope
- Destructors
- Constant object
- Constant data members of the class
- Friend function/Friend class
- This pointer
- Static class/ static member
- Operator Overloading
- Overloading Binary Operators
- Overloading Unary operators
- Overloading the Unary prefix and postfix operator
- Dynamic memory management
- Operators as member or non-member functions
- Explicit constructors and Overloading the Function call operator ()
- Base class and Derived class
- Relationship between Base and Derived class
- Constructors and Destructors in Derived classes
- Access modifiers
- Public, Private, and Protected inheritance
- Polymorphism
- Virtual function and virtual destructors
- Type fields
- Abstract classes
- Pure virtual functions
- Streams
- Classic and Standard streams
- Iostream library headers
- Input-output streams
- Uppercase and Lowercase control
- Files and Stream
- Creating a sequential file
- Reading data from a file
- Updating file
- Random access file
- Creating, reading, and writing data to a random access file
- Iterators
- Class bitset
- Exception handling
- Rethrowing an exception
- Stack Unwinding
- Dynamic Memory allocation
- Standard library exception hierarchy
- Non type parameters
- Overloading function templates
- Self-refer classes
- Typedef keyword
- Type of keyword
- Namespaces
- Multiple Inheritance
- Preprocessing directive
- Symbolic constant
- Macros
- Conditional Compilation
- # and ## Operators
- Assertions
To read this post you think that you learn something new then please share this post and for any question please comment on the section given below.