c++
1: intro to c++ syntax
- intro to c++
- examining our first program
- building a c++ program
- comments in c++
- variables in c++
- reading input into variables
- some points about variables
- variable initializations
- other arithmetic operators
- precedence
- the using statement
- c++ string i/o
2: control statements
- simple conditional statements
- relational operators
- arithmetic expressions - shortcuts
- arithmetic expressions - prefix vs postfix
- compound conditional statement
- control structures - big if/else
- switch statements
- control structures - loops
- control structures - the continue statement
- differentiating between = and ==
3: functions
- functions in c++
- global functiona
- argument/type coercion
- scope
- function declaration/definition
- argument passing
- why use pass by reference?
- function overloading
- ambiguous access
4: more functions, intro to classic arrays
- function templates
- calling function templates
- about stack frames
- recursion
- inline functions
- default arguments
- classic arrays
- static initializations
- writing to arrays
- enumerations
5: classes, part i
- intro
- what is a class
- classes
- classes: public vs. private
- classes: lots of member functions
- classes: more public vs. private
- where are member functions defined?
- what files should these definitions go in
- constructors
- a counter class
- constructors with arguments
- overloaded constructors
6: pointers
- pointers
- dynamic allocation
- accessing content
- pointers to existing variables
- pointers chaos
- allocating user-defined types
- accessing members via pointers
- passing arguments by pointer
- using const with pointers
- nonconstant pointer, nonconstant data
- constant pointer, nonconstant data
- constant pointer, constant data
- pointers and arrays
- pointer arithmetic
- back to arrays
- pointers as parameters
- dynamic allocation of arrays
7: c and c++ strings
- pointer based (c-style strings)
- arguments to main()
- the sizeof() operator
- c string library
- strlen
- strcpy
- strcmp
- c++ strings
- c++ string calls
- standard template library
- introduction to vectors
- initializing vectors
- using [] with vectors
8: classes - part ii
- classes
- a custom string class
- interface vs. implementation
- some minor additions
- implicit inlining
- multiple constructors
- destructor
- constructors & destructors
- returning references
- default assignment
- const in classes
- this
- person class
- static members
9: operator overloads
- more on function overloading
- operator overloading
- unary operator overloading
- binary operator overloads
- special binary overloads
- problems with emojis
- diversion: copy constructors
- copy constructors
- overloading assignment
- overloading << and >>
- overloading <<
- overloading >>
10: inheritance
- the conceptual side of classes
- inheritance
- protected members
- cleaning up our implementation
- overriding
- virtual functions
11: polymorphism
- inheritance -- review
- polymorphism
- shape class without polymorphism
- expanding the class
- square class
- shape class with polymorphism
- adding a shape
- polymorphism
- abstract classes
12: exceptions
- catching
- throwing
- stack unwinding
- w/ inheritance
- bad_alloc
- nullptr
- w/ function/method declarations
13: things in c++ 11 that make things easier
- auto
- delegating constructor
- unified initialization syntax
- scoped enumerations
- c++ array style
- bounds checking
- range based for
- sorting
- searching
- null ptr
14: function pointers, lambda expressions
- function pointers
- pointers to functions
- function pointers + lambdas
- lambda expressions
- passing lambdas as parameters
~ call me with function pointer
~ call me with std::function
~ call me without specifying type
- capturing local variables
- capturing variables by reference
15: standard template library
- the standard template library
- nested classes
- stl: iterators
- stl: review of vectors
~ vectors and iterators
- vector summary
- stl: maps
- adapters
- stack adapters
16: custom templates
- template functions
- overloading operations
- specializations
- template classes
- non-type parameters
- default arguments
- templates as arguments to templates
17: smart pointers
- shared_ptr
- shared_ptr - custom deleter
- shared_ptr - get classic pointer
-shared_ptr - simple case study
- weak pointers + weak_ptr
- weak_ptr + the lock() method
- weak_ptr + using shared_ptr constructor
- weak_ptr - creating
18: casting, stl alorithms
- casting
- dangerous casting
- const+ casting
- dynamic casting
- stl algorithms
19: r-value l-value + more semantics
- l values
- r values
- l value references
- r value references
- the “problem” with r values
- sample class
- problems
- excessive copies
- move semantics
- rule of five
- move constructor
20: files
- files
- writing to a file
- ofstram
- reading data from a file
- ifstream
- sequential files
- random access files
21: more abt stl
- trying to avoid copies
- avoiding copies
- using range based for loops with maps
- range based for - unintentional copies
- stl algorithms
22: bitwise operations, more on streams
- bitwise operations
- bitwise and ( & )
- bitwise or ( | )
- why use bitwise operators
- what are streams
- types of streams
- simple stream i/o
- get and getline
- stream manipulators
- floating point precision
- field width
- stream error states
- dealing with bad stream input
23: multiple inheritance
- what is multiple inheritance
- what is a mix-in
- more on multiple inheritance
- virtual base classes
- multiple inheritance + ambiguity