Designing in Implementing Effective C++ Classes
This seminar, based on Scott's award-winning Effective C++, covers the most important material that every professional C++ develper needs to know to be truly effective with the language.
Course Highlights
Participants will gain:
- Mastery of the crucial member functions applicable to every class
- Understanding of the resource acquisition is initalization (RAII) technique for managing resources
- Insights into the differences among member functions, non-member functions, virual functions, and non-virtual functions
- Knowledge of the rules of thumb applied by expert programmers as they design and implement software systems in C++
- Use objects to manage resources
- TR1 and Boost
- Think carefully about copying behavior in resource-managing classes
- Know what functions C++ silently writes and calls
- Explicitly disallow use of implicity generated member functions you don't want
- Handle copying in classes with pointers
- Make destructors virtual in base classes
- Strive for exception-safe code
- Handle assignment to self in operator
- Assign to all data members in operator
- Make sure public inheritance models "isa"
- Differentiate between inheritance of interface and inheritance of implementation
- Model "has-a" or "is-implemented-in-terms-of" through containment
Who should attend
Systems designers, programmers and technical managers involved in the design, implementation and maintenance of software systems written in C++. Participants should already know the basic features of C++ (e.g. classes, inheritance, virtual functions, templates), but expertise is not required. People who have learned C++ recently, as well as people who have been programming C++ for some time, will come away from this seminar with useful, practical, proven information.
Format
Lecture and question/answer. There are no hands-on exercises, but participants are welcome to use their computers to experiment with the course material as it is presented.
Detailed Topic Outline
1. Fundamental Concepts and Functions
2. Overlaoding Operators
3. Inheritance and Object-Oriented Design
4. Further Reading
Scott Meyers

Scott Meyers is an author and consultant with over thirty years of software development experience. His three best-selling "Effective C++" books defined a new genre in technical publishing, and his "Effective C++ CD" broke more new ground.
His consulting and research work has spanned a wide range of industries and topics, including regulatory genetics, CAD/CAE applications and video games. His current work focuses on identifying fundamental principles for improving software quality.
Scott is Consulting Editor for Addison-Wesley's Effective Software Development Series and sits on Software Development Magazine's technical advisory board. One of the world's foremost authorities on C++ software development, he offers consulting and training services to clients worldwide. He received his PhD in Computer Science form Brown University in 1993.




