现在的位置: 首页 > 综合 > 正文

<林锐高质量c/c++编程指南>记录

2013年10月13日 ⁄ 综合 ⁄ 共 1716字 ⁄ 字号 评论关闭

        学习c++也好几年的时间了,但看完此文觉得平时的确很多规范性问题及语言本身的细节问题不太注意。在此记录一下。

第一章 文件结构

        每个C++/C 程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。

        头文件使用ifndef/define/endif结构产生与处理块,为了防止头文件被重复引用。

        #include<filename.h>和#include"filename.h"的区别是:前者引用标准库的头文件(编译器将从标准库目录开始搜索),后者引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。

        头文件的作用:1)通过头文件来调用库功能。2)头文件能加强类型安全检查。

第二章 程序的版式

        这个平时习惯还比较好。注意的是修饰符*和&最好紧靠变量名,不容易引起误解。int *x, y;这里y不是指针。

        类的版式最好采用“以行为为中心”的书写方式,首先考虑类应该提供什么样的函数。这样不仅让自己在设计类时思路清晰,而且方便别人阅读。

第三章 命名规则

        标识符的长度应当符合“min-length && max-information"原则。Windows 应用程序的标识符通常采用“大小写”混排的方式,如AddChild。而Unix 应用程序的标识符通常采用“小写加下划线”的方式,如add_child。

        类名和函数名用大写字母开头的单词组合而成;变量和参数用小写字母开头的单词组合而成;常量全用大写的字母,用下划线分割单词;静态变量加前缀s_(表示static);如果不得已需要全局变量,则使全局变量加前缀g_(表示global);类的数据成员加前缀m_(表示member),这样可以避免数据成员与成员函数的参数同名。

第四章 表达式和基本语句

        运算符的优先级太难记,拿不准的时候加括号就对了。。

        if语句”与零值比较“的问题:

            bool变量:(TRUE的值究竟是什么没有统一的标准)

                            if ( flag )
                            if ( !flag )

            浮点变量:精度限制

                             const float EPSINON = 0.00001;

                             if ((x >= - EPSINON) && (x <= EPSINON)

            指针变量:

                            if (p == NULL)
                            if (p != NULL)

        在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU 跨切循环层的次数

        goto语句可从多重循环中直接跳出。慎用,不是禁用。

第五章 常量

        const 与#define 的比较:

           (1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。
           (2) 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。

        类中的const数据成员不能在声明时初始化,只能再类构造函数的初始化表中进行。其只是在某个对象生存期内是常量,对整个类而言却是可变的。因为类可以创建多个对象,不同的对象其congst数据成员的值可以不同。建立整个类中都恒定的常量,可以用枚举常量来实现。如

                    class A
                   {…
                         enum { SIZE1 = 100, SIZE2 = 200}; // 枚举常量
                         int array1[SIZE1];

                         int array2[SIZE2];
                   };

        枚举常量不会占用对象的存储空间,它们在编译时被全部求值。枚举常量的缺点是:它的隐含数据类型是整数,其最大值有限,且不能表示浮点数(如PI=3.14159)。

抱歉!评论已关闭.