Personal repo for C++ Object Oriented Programming Concepts
- Input/Output
- File streams and string streams
- C++ String Operations
- Default Function Parameters
- Function Overloading
- References (rvalues and l values)
- Pass by value and pass by reference
- Dynamic Memory
- Operator overloading
-
Preprocessor directives (processed by the preprocessor before actual compilation - begin with the # symbol)
-
Separate compilation and include guards?
-
Classes
-
Constructor
-
Object Creation (MIL, implict conversion)
-
Big 5
-
Destructor
-
Copy constructor
-
copy assignment operator
-
Copy/Move Elision
-
Visibility (public & private), class keyword vs struct
-
Encapsulation
-
Iterators (auto type, range based loops)
- Inheritance
- 3 Access Levels (public, private, protected)
- Dynamic Dispatch/Polymorphism
- Virutal Methods vs Pure Virutal Methods
- Abstract/Concrete Classes
- Partial assignment/Mixed Assignment/Polymorphic Assignment
UML
- fields
- has-a
- owns-a
Design Patterns
- observer pattern
- decorator pattern
- factory method pattern
- template method pattern
- iterator pattern
Idioms
- RAII
- NVI
- pImpl (used in exception safety)
- copy and swap
Standard Template Library
- Vector and common vector functions
- Vector Iterator/Reverse Iterator
- Map and common map functions
- Iterate through map
Casting
- static_cast
- dynamic_cast
- reinterpret_cast
- const_cast
VTables and virtual inheritance
Exception Safety, throw, catch
- basic
- strong
- no throw
Coupling, Cohesion