
C++——Effective C++
文章平均质量分 79
妍妍
Nerver give up!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
杂项讨论
Item 53 Pay attention to compiler warnings.不要轻忽编译器的警告。 努力在编译器的最高警告级别下争取“无任何警告”的荣誉。 不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同,一旦移植到另一个编译器上,你原本依赖的警告信息可能消失。 Item 54 Familiarize yourself with the standard lib原创 2012-12-21 09:35:35 · 394 阅读 · 0 评论 -
设计与声明
Item18 Make interfaces easy to use correctly and hard to use incorrectly. 程序员在自定义接口的时候,要注意与内置行为的类型保持兼容性。 容易正确使用,举例如下: class Date { public: Date(int month,int day,int year); }; 不如下面的形式,防止传错参数,并且可对原创 2012-12-14 09:30:35 · 423 阅读 · 0 评论 -
定制new和delete
Item 49 Understand the behavior of the new-handler.了解new-handler的行为。 当operator new抛出异常之前以反映一个未满足的内存需求之前,会先调用称为new-handler的客户指定的错误处理函数。 new_handler是一个typedef的函数指针:typedef void ( *new_handler )( ); 定原创 2012-12-20 13:55:06 · 489 阅读 · 0 评论 -
继承与面向对象设计
Item 32 Make sure public inheritance models "is-a". 适用于base classes身上的每一件事情也一定适用于derived classes身上,因为每一个derived class对象也是一个base class对象。 这就是Liskov替换原则:子类型必须能够替换掉他们的基类型。 Item 33 Avoid hiding inherit原创 2012-12-17 10:40:05 · 371 阅读 · 0 评论 -
构造/析构/复制运算
Item5 Know what functions C++ silently writes and calls. 编译器可为一个类默认生成默认构造函数、拷贝构造函数和赋值运算符以及析构函数。注意有指针成员的情况下,默认生成的拷贝构造函数和赋值运算符只是简单的拷贝指针的值,指针指向的数据并不拷贝,即执行的为“浅拷贝”。有可能造成指针指向一个已经释放的内存位置。顾在这样的情况下最好自己实现拷贝构造函原创 2012-12-11 10:03:18 · 413 阅读 · 0 评论 -
让自己习惯C++
Item1 View C++ as a federation of languages。 C、Object-Oriected C++、Template C++、STL。 Item2 Prefer consts, enums, and inlines to #defines。比如#define ASPECT_RATIO 1.653替换为const double AspectRatio=1.653;原创 2012-12-10 10:16:54 · 462 阅读 · 0 评论 -
模板与泛型编程
Item 41 Understand implicit interfaces and compile-time polymorphism. 了解隐式接口和编译期多态。 类和模板都支持接口和多态。 对于类,接口是显式的。显式接口由函数的声明(函数名称、参数类型、返回类型)构成。多态则是通过virtual函数发生于运行期。 对于模板,接口是隐式的。隐式接口是由有效表达式组成。多态是通过templ原创 2012-12-19 10:21:39 · 471 阅读 · 0 评论 -
实现
Item 26 Postpone variable definitions as long as possible. 由于自定义类型在定义变量的时候设计构造函数和析构函数的开销,因此应尽可能延后变量的定义。 印象比较深的是如下两段代码: Widget w; for(int i=0;i<n;i++) { w=取决于i的某个值; } for(int i=0;i<n;i++) { Wi原创 2012-12-17 10:27:46 · 354 阅读 · 0 评论 -
资源管理
Item13 Use objects to manage resoruces. 即用专门的对象来管理资源。常用的就是中的auto_ptr和tr1::shared_ptr。 主要为了防止资源泄露,请使用RAII对象,他们在构造函数中获得资源并在析构函数中释放资源。 RAII:Resource Acquisition is Initialization。 举例如下: class Investm原创 2012-12-13 10:10:14 · 361 阅读 · 0 评论