Difference between revisions of "COMP345 Fall 2020 Final coverage"
From Dr. Joey Paquet Web Site
Line 130: | Line 130: | ||
**templates vs compilation units in the compilation process (.h/.cpp files) | **templates vs compilation units in the compilation process (.h/.cpp files) | ||
**templates vs Java Generics | **templates vs Java Generics | ||
− |
Latest revision as of 09:37, 17 November 2021
- Notes:
- The following is the list of topics that are included in the final written examination.
- In general, you are responsible for all the material presented in slide set 0 to 11, along with the lab examples pertaining to them (i.e. lab 1 to lab 11)
- Some specific topics will not be part of the examination. These are denoted with an "X" below.
- Slide Set 0
- none
- Slide Set 1: introduction
- program structure
- compilation unit
- header/cpp files
- includes
- redundant includes
- namespaces
- Slide Set 2: preliminary topics
- structs and classes as data types
- variable initialization
- implicit/explicit type coercion
- static_cast, dynamic_cast
- upcasting/downcasting
- conversion sequences
- pointers
- pointer artithmetic
- pointers and const
- void/wild/dangling/null pointers
- stack/heap/new/delete
- arithmetics
- references
- smart pointers
- parameter passing
- strings
- Slide Set 3: input/output
- input/output streams
- cin/cout
- files stream declarations, open/close, usage
- << and >> operator overloading
- MFC serialization (X)
- Slide Set 4: classes
- classes vs. structs
- struct usage
- class declarations (.h and .cpp files)
- declaring/using objects
- with or without pointers
- inline functions/methods
- const specifier
- static specifier
- friends
- constructors/destructors
- declaration/implementation
- initialization list
- implicit/explicit constructor calls
- call chain
- inheritance
- overriding/overloading
- vs. constructor/destructor implementation
- assignment operator
- copy constructor
- shallow/deep copy
- multiple inheritance
- virtual inheritance
- diamond problem
- Slide Set 5: C/C++ arrays and dynamic arrays, containers
- statically allocated arrays (one or multidimensional)
- declaration, usage
- memory allocation model
- passing as parameters
- dynamically allocated arrays (one-dimensional)
- declaration, usage
- memory allocation model
- passing as parameters
- array decay into a pointer
- static array classes
- STL containers
- declaration, usage
- iterators
- statically allocated arrays (one or multidimensional)
- Slide Set 6: MVC and observer
- MVC design (roles of Model, View Controller components)
- Role of Observer pattern
- MVC example in lab
- Slide Set 7: polymorphism
- Polymorphism: concept vs Object-oriented programming and its implementation in C++
- Virtual methods
- Pure virtual methods
- Abstract classes
- Virtual destructors
- vs. Java interfaces
- Value semantics and object slicing
- Reference semantics and polymorphism
- Function pointers
- Virtual function tables
- Slide Set 8: design patterns
- Design patterns: concepts
- Observer: design and C++ implementation
- Strategy: design and C++ implementation
- Adapter: design and C++ implementation
- Slide Set 9: operator overloading
- operators as members or free operators
- friend operators
- limitations
- use of const in operator declarations
- assignment operator: self-assignment check, memory leak prevention
- specific operators: new, delete, [], etc as presented in the slides
- Slide Set 10: exception handling
- concepts
- try/throw/catch mechanism
- exception handling mechanism vs regular execution mechanism
- stack unwinding
- exception specification
- standard exceptions (X)
- custom exception classes
- overhead of using exceptions
- Slide Set 11: templates
- concepts: metaprogramming
- template processor vs compilation process
- function templates, operator templates, class templates
- smart pointers example
- explicit template specialization
- class templates vs static members
- templates vs compilation units in the compilation process (.h/.cpp files)
- templates vs Java Generics