OOP345 Object-Oriented Software Development Using C++ Object-Oriented paradigm inheritance templates composition, aggregation, association expressions functions error handling raw pointers smart pointers Standard Template Library multi-threading thread classes file stream objects string class platform-dependent input and output comparison of C++11 and C11 syntax break, continue, goto