您的位置:首页 > 编程语言 > C语言/C++

C++编程思想笔记(0101)。。。

2009-09-09 09:13 337 查看
1.用C语言进行程序设计时,预处理器可以不受限制地建立宏并用它来替代值。因为预处理器只做文本替代,它既没有类型检查思想,也没有类型检查工具,所以预处理器的值替代会产生一些微小的问题,这些问题在C + +中通过使用c o n s t而避免

2.C + +用c o n s t把值替代带进编译器领域来解决这些问题。可以这样写:

const bufsize=100;

或用更清楚的形式:

const int bufsize=100;

这样就可以在任何编译器需要知道这个值的地方使用b u f s i z e,同时它还可以执行常量折叠,也就是说,编译器在编译时可以通过必要的计算把一个复杂的常量表达式缩减成简单的。这一点在数组定义里显得尤其重要:

char buf[bufsize];

我们可以为所有的内部数据类型( c h a r、i n t、f l o a t和d o u b l e型)以及由它们所定义的变量(也可以是类的对象,这将在以后章节里讲到)使用限定符c o n s t。我们应该完全用c o n s t取代# d e f i n e的值替代。

3.C + +中的const默认为内部连接,也就是说,const仅在const被定义过的文件里才是可见的,而在连接时不能被其他编译单元看到。当定义一个常量(c o n s t)时,必须赋一个值给它,除非用e x t e r n作了清楚的说明:

extern const bufsize;

虽然上面的e x t e r n强制进行了存储空间分配(另外还有一些情况,如取一个c o n s t的地址,也要进行存储空间分配),但是C + +编译器通常并不为c o n s t分配存储空间,相反它把这个定义保存在它的符号表里。当c o n s t被使用时,它在编译时会进行常量折叠。

4.如果不让对象的返回值作为一个左值使用,当返回一个对象的值时,应该使用c o n s t。返回一个内部数据类型的值时, c o n s t没有意义的原因是:编译器已经不让它成为一个左值(因为它总是一个值而不是一个变量)。仅当返回用户定义的类型对象的值时,才会出现上述问题。

5.程序员可能想在一个类里建立一个局部常量,将它用在常数表达式里,这个常数表达式在编译期间被求值。然而, c o n s t的意思在类里是不同的,所以必须使用另一技术—-枚举,以达到同样的效果。

6.为了保证一个类对象为常量,引进了c o n s t成员函数:对于一个常量对象,只能调用c o n s t成员函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: