读者可能怀疑:连if、for、while、goto、switch这样简单的东西也要探讨编程风格,是不是小题大做? 我真的发觉很多程序员用隐含错误的方式写表达式和基本语句,我自己也犯过类似的错误。 表达式和语句都属于C++/C的短语结构语法。它们看似简单,但使用时隐患比较多。 本章归纳了正确使用表达式和语句的一些规则与建议。 4.1 发布时间:2012-06-30 作者: 佚名技术 views(481)
7.5 free和delete把指针怎么啦? 7.7 杜绝野指针 野指针不是NULL指针,是指向垃圾内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是野指针是很危险的,if语句对它不起作用。 野指针的成因主要有两种: (1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会 发布时间:2012-06-30 作者: 佚名技术 views(175)
9.3 构造和析构的次序 构造从类层次的最根处开始,在每一层中,首先调用基类的构造函数,然后调用成员对象的构造函数。析构则严格按照与构造相反的次序执行,该次序是唯一的,否则编译器将无法自动执行析构过程。 一个有趣的现象是,成员对象初始化的次序完全不受它们在初始化表中次序的影响,只由成员对象在类中声明的次序 发布时间:2012-06-30 作者: 佚名技术 views(165)
常量是一种标识符,它的值在运行期间恒定不变。C语言用 #define来定义常量(称为宏常量)。C++ 语言除了 #define外还可以用const来定义常量(称为const常量)。 5.1 为什么需要常量 如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦? (1) 程序的可读性(可理解性)变差。程序员自己会忘记那些数字或字符串 发布时间:2012-06-30 作者: 佚名技术 views(172)
7.9 内存耗尽怎么办? 如果在申请动态内存时找不到足够大的内存块,malloc和new将返回NULL指针,宣告内存申请失败。通常有三种方式处理内存耗尽问题。 (1)判断指针是否为NULL,如果是则马上用return语句终止本函数。例如: void Func(void) { A *a = new A; if(a == NULL) { return; } } (2)判断指针是否为NULL,如果是 发布时间:2012-06-30 作者: 佚名技术 views(188)
类String的赋值函数比构造函数复杂得多,分四步实现: (1)第一步,检查自赋值。你可能会认为多此一举,难道有人会愚蠢到写出 a = a 这样的自赋值语句!的确不会。但是间接的自赋值仍有可能出现,例如 // 内容自赋值 b = a; c = b; a = c; // 地址自赋值 b = a; a = *b; 也许有人会说:即使出现自赋值,我也可以不理睬,大 发布时间:2012-06-30 作者: 佚名技术 views(189)
7.10 malloc/free 的使用要点 函数malloc的原型如下: void * malloc(size_t size); 用malloc申请一块长度为length的整数类型的内存,程序如下: int *p = (int *) malloc(sizeof(int) * length); 我们应当把注意力集中在两个要素上:类型转换和sizeof。 u malloc返回值的类型是void *,所以在调用malloc时要显式地进行类型 发布时间:2012-06-30 作者: 佚名技术 views(140)
对象(Object)是类(Class)的一个实例(Instance)。如果将对象比作房子,那么类就是房子的设计图纸。所以面向对象设计的重点是类的设计,而不是对象的设计。 对于C++程序而言,设计孤立的类是比较容易的,难的是正确设计基类及其派生类。本章仅仅论述继承(Inheritance)和组合(Composition)的概念。 注意,当前面向对 发布时间:2012-06-30 作者: 佚名技术 views(177)
|