2011年11月28日

摘要: int ci = 123; const int *ip2 = &ci; ci = 345; // 没问题 *ip2 = 788; // 错误 阅读全文

posted @ 2011-11-28 22:20 SomethingReview 阅读(149) 评论(0) 推荐(0) 编辑

摘要: 能对引用做的唯一操作是将其初始化。一旦初始化结束,引用就是其初始化物的另一种写法罢了。由于引用没有地址,声明引用的引用、指向引用的指针或引用的数组都是不合法的。引用不可能带有常量性和挥发性,不能用关键字const和volatile来修饰引用。没有空引用,也没有类型为void的引用。如果函数的返回值具有引用类型,这就意味着可以对该函数的返回值重新赋值。一个经常被津津乐道的典型例子就是表示数组之抽象数据类型的索引函数。引用的另一个用途就是可以让函数在其返回值之外多传几个值。 阅读全文

posted @ 2011-11-28 22:08 SomethingReview 阅读(173) 评论(0) 推荐(0) 编辑

摘要: 函数重载和形式参数默认值之间其实并无干系,不过这两个独立的语言特征有时会被混淆,因为它们会构建出语法上非常相像的函数用法接口。函数重载主要用于一组抽象意义相同,但实现不同的函数。而形式参数默认值主要用于简化,为函数提供更简洁的接口。 阅读全文

posted @ 2011-11-28 21:43 SomethingReview 阅读(158) 评论(0) 推荐(0) 编辑

摘要: 全局变量增加了模块之间的耦合,因为它们常常作为幼稚的模块间消息传递机制的设施存在。仅仅是把对于值的访问加上了函数形式的包装,我们就获得了可贵的可扩充性。要是再加上函数重载或者给予函数形式参数以默认值,我们就根本不需要怎么改源代码了。全局变量经常要求延迟到运行期才进行静态初始化。在C++语言中,如果静态变量用来初始化的值不能在编译时就计算妥当,那么这个初始化的动作就会被拖到运行期。如果该用函数或者class来充当访问全局信息的掮客,初始化动作就会被延后,从而变得安全无误了。 阅读全文

posted @ 2011-11-28 21:36 SomethingReview 阅读(178) 评论(0) 推荐(0) 编辑

摘要: 幻数带来的问题是它们没有抽象语义。在其所在作用域有着明确含义的枚举常量,有着不占空间,也没有任何运行期成本的巨大优点。字面常量的实际类型是平台相关的。幻数会以意想不到的方式降低它所代表类型的精度。字面常量没有地址。请使用枚举常量或初始化了的具名常量。 阅读全文

posted @ 2011-11-28 21:15 SomethingReview 阅读(164) 评论(0) 推荐(0) 编辑

摘要: 最有效率的代码是根本不存在的代码,最好就是要注释的代码自注释。不应该把更改日志作为注释插入到源文件的头部或者尾部。代码增加一页,理解难度就大了一倍。注释要随着它描述的代码的更改而更改。遵循简单易行、定义良好的命名习惯,函数声明中形式参数的名字尤其重要。采用标注库中的、人尽皆知的组件。注释不应该描述显而易见的东西,或把在别的地方已经说清楚的东西再说一遍。在代码容易理解和维护的前提下尽可能少写注释。 阅读全文

posted @ 2011-11-28 20:56 SomethingReview 阅读(189) 评论(0) 推荐(0) 编辑