《Effective C++影印本》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:(美)迈耶斯著
  • 出 版 社:北京:中国电力出版社
  • 出版年份:2003
  • ISBN:7508314980
  • 页数:258 页
图书介绍:本书汇总了使用C++的50个方针,指导你更好地进行编程和设计,并针对每个方针给出了具体的例子。本书的主要内容有:针对面向对象设计、类设计以及继承的正确用法所给出的方针;对标准C++库的讨论,包括如何使用像string和vector这样的标准模板库来编写优秀的程序;类内部的常量初始化、名字空间和成员模板等;编程高手的睿智建议。本书的作者斯科特·迈耶斯是C++方面的公认权威,本书第一版曾创下发行量100000册的成绩,并被翻译成四种语言,其受欢迎程度不言自明。

Introduction 1

Shifting from C to C++ 13

Item 1:Prefer const and inline to #define. 13

Item 2:Prefer<iostream>to<stdio.h>. 17

Item 3:Prefer new and delete to malloc and free. 19

Item 4:Prefer C++-style comments. 21

Memory Management 22

Item 5:Use the same form in corresponding uses of new and delete. 23

Item 6:Use delete on pointer members in destructors. 24

Item 7:Be prepared for out-of-memory conditions. 25

Item 8:Adhere to convention when writing operator new and operator delete. 33

Item 9:Avoid hiding the normal form of new. 37

Item 10:Write operator delete if you write operator new. 39

Constructors,Destructors,and Assignment Operators 49

Item 11:Declare a copy constructor and an assignment operator for classes with dynamically allocated memory. 49

Item 12:Prefer initialization to assignment in constructors. 52

Item 13:List members in an initialization list in the order in which they are declared. 57

Item 14:Make sure base classes have virtual destructors. 59

Item 15:Have operator=return a reference to ?this. 64

Item 16:Assign to all data members in operator=. 68

Item 17:Check for assignment to self in operator=. 71

Classes and Functions:Design and Declaration 77

Item 18:Strive for class interfaces that are complete and minimal. 79

Item 19:Differentiate among member functions,non-member functions,and friend functions. 84

Item 20:Avoid data members in the public interface. 89

Item 21:Use const whenever possible. 91

Item 22:Prefer pass-by-reference to pass-by-value. 98

Item 23:Don t try to return a reference when you must return an object. 101

Item 24:Choose carefully between function overloading and parameter defaulting. 106

Item 25:Avoid overloading on a pointer and a numerical type. 109

Item 26:Guard against potential ambiguity. 113

Item 27:Explicitly disallow use of implicitly generated member functions you don t want. 116

Item 28:Partition the global namespace. 117

Classes and Functions:Implementation 123

Item 29:Avoid returning handles to internal data. 123

Item 30:Avoid member functions that return non-const pointers or references to members less accessible than themselves. 129

Item 31:Never return a reference to a local object or to a dereferenced pointer initialized by new within the function. 131

Item 32:Postpone variable definitions as long as possible. 135

Item 33:Use inlining judiciously. 137

Item 34:Minimize compilation dependencies between files. 143

Inheritance and Object-Oriented Design 153

Item 35:Make sure public inheritance models isa . 154

Item 36:Differentiate between inheritance of interface and inheritance of implementation. 161

Item 37:Never redefine an inherited nonvirtual function. 169

Item 38:Never redefine an inherited default parameter value. 171

Item 39:Avoid casts down the inheritance hierarchy. 173

Item 40:Model has-a or is-implemented-in-terms-of through layering. 182

Item 41:Differentiate between inheritance and templates. 185

Item 42:Use private inheritance judiciously. 189

Item 43:Use multiple inheritance judiciously. 194

Item 44:Say what you mean;understand what you re saying. 210

Miscellany 212

Item 45:Know what functions C++ silently writes and calls. 212

Item 46:Prefer compile-time and link-time errors to runtime errors. 216

Item 47:Ensure that non-local static objects are initialized before they re used. 219

Item 48:Pay attention to compiler warnings. 223

Item 49:Familiarize yourself with the standard library. 224

Item 50:Improve your understanding of C++. 232

Afterword 237

Index 239