Skip to content

Effective C++ 50 Specific Ways to Improve Your Programs and Design

Best in textbook rentals since 2012!

ISBN-10: 0201924889

ISBN-13: 9780201924886

Edition: 2nd 1998

Authors: Scott D. Meyers

List price: $39.95
Blue ribbon 30 day, 100% satisfaction guarantee!
what's this?
Rush Rewards U
Members Receive:
Carrot Coin icon
XP icon
You have reached 400 XP and carrot coins. That is the daily max!

Description:

The first edition of Effective C++ sold nearly 100,000 copies and was translated into four languages. It's easy to understand why. Scott Meyers' practical approach to C++ described the rules of thumb employed by the expertsthe things they almost always do or almost always avoid doingto produce clear, correct, efficient code. Each of this book's 50 guidelines summarizes a way to write better C++, and the accompanying discussions are backed by specific examples. For this new edition, Meyers reworked every guideline in the book. The result is exceptional adherence to C++'s Draft International Standard, current compiler technology, and the latest insights into the use of C++ for real-world…    
Customers also bought

Book details

List price: $39.95
Edition: 2nd
Copyright year: 1998
Publisher: Addison Wesley Professional
Publication date: 9/2/1997
Binding: Paperback
Pages: 288
Size: 7.75" wide x 9.50" long x 0.50" tall
Weight: 1.100
Language: English

Preface
Acknowledgements
Introduction
Shifting From C to C++
Prefer const and inline to #define
Prefer iostream to stdio.h
Prefer new and delete to malloc and free
Prefer C++-style comments
Memory Management
Use the same form in corresponding uses of new and delete
Use delete on pointer members in destructors
Be prepared for out-of-memory conditions
Adhere to convention when writing operator new and operator delete
Avoid hiding the "normal" form of new
Write operator delete if you write operator new
Constructors, Destructors, and Assignment Operators
Declare a copy constructor and an assignment operator for classes with dynamically allocated memory
Prefer initialization to assignment in constructors
List members in an initialization list in the order in which they are declared
Make destructors virtual in base classes
Have operator return a reference to *this
Assign to all data members in operator
Check for assignment to self in operator
Classes and Functions: Design and Declaration
Strive for class interfaces that are complete and minimal
Differentiate among member functions, non-member functions, and friend functions
Avoid data members in the public interface
Use const whenever possible
Prefer pass-by-reference to pass-by-value
Don't try to return a reference when you must return an object
Choose carefully between function overloading and parameter defaulting
Avoid overloading on a pointer and a numerical type
Guard against potential ambiguity
Explicitly disallow use of implicitly generated member functions you don't want
Partition the global namespace
Classes and Functions: Implementation
Avoid returning "handles" to internal data
Avoid member functions that return non-const pointers or references to members less accessible than themselves
Never return a reference to a local object or to a dereferenced pointer initialized by new within the function
Postpone variable definitions as long as possible
Use inlining judiciously
Minimize compilation dependencies between files
Inheritance and Object-Oriented Design
Make sure public inheritance models "isa."
Differentiate between inheritance of interface and inheritance of implementation
Never redefine an inherited nonvirtual function
Never redefine an inherited default parameter value
Avoid casts down the inheritance hierarchy
Model "has-a" or "is-implemented-in-terms-of" through layering
Differentiate between inheritance and templates
Use private inheritance judiciously
Use multiple inheritance judiciously
Say what you mean; understand what you're saying
Miscellany
Know what functions C++ silently writes and calls
Prefer compile-time and link-time errors to runtime errors
Ensure that non-local static objects are initialized before they're used
Pay attention to compiler warnings
Familiarize yourself with the standard library
Improve your understanding of C++
Afterword
Index