Effective C++ for C++ Programmers



This intensive course, based on material in Meyers' landmark books (Effective C++, More Effective C++, and Effective STL), explains how to use C++ effectively. You will learn how to create libraries and programs that are correct, efficient, portable, maintainable, and extensible.

This course follows a format of lecture, question/answer, group design and problem-solving exercises and does not include hands-on programming.

Note: You are required to bring your own laptop.


  • Systems designers
  • Programmers
  • Technical managers


  • General knowledge of basic features of C++ (e.g., classes, inheritance, virtual functions, templates) but expertise is not required

Learning Objectives

  • Tips applied by expert C++ programmers as they design and implement software systems
  • Proper application of C++'s many features
  • Combine language features to achieve desired behavior

1. Const

2. Resource Management

3. Constructors, Destructors, and Assignment Operators

4. Handle Copying in Classes with Pointers

5. Further Class Design

6. Inheritance and Object-Oriented Design

7. Differentiate between Inheritance of Interface and Inheritance of Implementation

8. Avoid Casts Down the Inheritance Hierarchy

9. Concepts and Architecture of the STL

10. Efficiency

11. Don't Try to Return a Reference When You Must Return an Object

12. The Pros and Cons of Inlining

13. Library Issues

14. Reference Counting

15. Programming with Exceptions