Effective C++: 55 Specific Ways to Improve Your Programs and Designs, 3rd ed.
Эффективное использование C++: 55 верных советов улучшить структуру и код ваших программ, 3-е изд.
Год издания: 2005 (бумага) / 2011 (e-book)
Автор: Meyers Scott / Мейерс Скотт / Мэйерс Скотт
Издательство: Addison-Wesley
Издание: Second e-book release, April 2011 (essentially identical to the 11th paper printing).
ISBN: 0-321-33487-6 (print) / 978-0-321-51582-7 (e-book)
Язык: Английский
Формат: PDF
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Количество страниц: 321
Перевод на русский язык:
Мэйерс С. Эффективное использование C++, 3-е изд. — М.: ДМК Пресс, 2006.
Предыдущее издание:
Meyers S. Effective C++, 2nd ed. — Addison-Wesley, 1998.
Описание:
Effective C++ 3/e is a complete update of Effective C++ and Effective C++ 2/e. Like its predecessors, 3/e has 55 guidelines which contain better, more effective ways to write code, backed by specific examples. The second edition published in 1997, and was basically a face-lift of the first edition, keeping most of the same elements, and seven years later is still selling well. Now, Meyers has dramatically rejuvenated the material, including more than 50% brand-new material. Meyers began this edition by asking himself, "What are the 55 most important pieces of advice for practicing C++ programmers in 2005?" He also asked thousands of past users of his books this same question. This resulted in a completely new book. New material includes use of UML notation, thread safety, exception safety, design patterns, and templates. Any older material has been revitalized to reflect new ideas and strides in C++ development.
Оглавление
Contents
Preface
Acknowledgments
Introduction
Chapter 1: Accustoming Yourself to C++
Item 1: View C++ as a federation of languages
Item 2: Prefer consts, enums, and inlines to \#defines
Item 3: Use const whenever possible
Item 4: Make sure that objects are initialized before they’re used
Chapter 2: Constructors, Destructors, and Assignment Operators
Item 5: Know what functions C++ silently writes and calls
Item 6: Explicitly disallow the use of compiler-generated functions you do not want
Item 7: Declare destructors virtual in polymorphic base classes
Item 8: Prevent exceptions from leaving destructors
Item 9: Never call virtual functions during construction or destruction
Item 10: Have assignment operators return a reference to *this
Item 11: Handle assignment to self in operator=
Item 12: Copy all parts of an object
Chapter 3: Resource Management
Item 13: Use objects to manage resources
Item 14: Think carefully about copying behavior in resource-managing classes
Item 15: Provide access to raw resources in resource-managing classes
Item 16: Use the same form in corresponding uses of new and delete
Item 17: Store newed objects in smart pointers in standalone statements
Chapter 4: Designs and Declarations
Item 18: Make interfaces easy to use correctly and hard to use incorrectly
Item 19: Treat class design as type design
Item 20: Prefer pass-by-reference-to-const to pass-by-value
Item 21: Don’t try to return a reference when you must return an object
Item 22: Declare data members private
Item 23: Prefer non-member non-friend functions to member functions
Item 24: Declare non-member functions when type conversions should apply to all parameters
Item 25: Consider support for a non-throwing swap
Chapter 5: Implementations
Item 26: Postpone variable definitions as long as possible
Item 27: Minimize casting
Item 28: Avoid returning “handles” to object internals
Item 29: Strive for exception-safe code
Item 30: Understand the ins and outs of inlining
Item 31: Minimize compilation dependencies between files
Chapter 6: Inheritance and Object-Oriented Design
Item 32: Make sure public inheritance models “is-a”
Item 33: Avoid hiding inherited names
Item 34: Differentiate between inheritance of interface and inheritance of implementation
Item 35: Consider alternatives to virtual functions
Item 36: Never redefine an inherited non-virtual function
Item 37: Never redefine a function’s inherited default parameter value
Item 38: Model “has-a” or “is-implemented-in-terms- of” through composition
Item 39: Use private inheritance judiciously
Item 40: Use multiple inheritance judiciously
Chapter 7: Templates and Generic Programming
Item 41: Understand implicit interfaces and compile-time polymorphism
Item 42: Understand the two meanings of typename
Item 43: Know how to access names in templatized base classes
Item 44: Factor parameter-independent code out of templates
Item 45: Use member function templates to accept “all compatible types”
Item 46: Define non-member functions inside templates when type conversions are desired
Item 47: Use traits classes for information about types
Item 48: Be aware of template metaprogramming
Chapter 8: Customizing new and delete
Item 49: Understand the behavior of the new-handler
Item 50: Understand when it makes sense to replace new and delete
Item 51: Adhere to convention when writing new and delete
Item 52: Write placement delete if you write placement new
Chapter 9: Miscellany
Item 53: Pay attention to compiler warnings
Item 54: Familiarize yourself with the standard library, including TR1
Item 55: Familiarize yourself with Boost
Appendix A: Beyond Effective C++
Appendix B: Item Mappings Between Second and Third Editions
Index
Другие раздачи
- Недооформленная раздача. По сравнению с той раздачей, ПДФ в этой раздаче имеет несколько мелких улучшений: (1) После обложки вставлена пустая страница, так что чётные/нечётные страницы оказываются на правильной стороне разворота. (2) Ссылки из электронного оглавления (bookmarks aka outline) ведут к соответствующим заголовкам, а не в начало страницы. (3) В конце удалена пустая страница бо́льшего размера, чем все остальные, что может мешать читалкам правильно отрабатывать команду «Fit Width». (4) Файл назван по шаблону «автор - название - год», как требуется правилами.
Доп. информация:
Раздача создана в соответствии с
пунктом 11.1 правил:
Недооформленная раздача этой книги существует более 10 дней (фактически, более 10 лет).