effective c++
条款2:尽量用const和inline而不用#define 1,用#define一个符号名代替某个常数时,预处理器在编译前就将其替换,所以编译器无法获得该符号名的任何信息,而以后的发生关于该符号名的一些错误可能很令人费解。 2,用#define实现那些看起来象函数而又不会导致函数调用的宏,可能产生很多缺陷和问题。可以直接使用inline函数调用。
条款3:尽量使用<iostream>而不用<stdio.h> 1,stdio.h中的scanf和printf虽然很好用,但是不是类型安全的且没有扩展性。而使用iostream中的<<和>>操作符却恰恰很好的解决了这个问题。 2,使用<<和>>,编译器可以自动根据变量类型选择操作符的不同形式,不必要像在scanf和printf上一样,需要死记一些规定。 3,尽管有些iostream的操作实现起来比相应的Cstream效率要低,但是iostream库类有构造函数,最重要的是库中的类和函数所提供的类型安全和可扩展形远超过想象。
条款4:尽量用new和delete而不用malloc和free 1,malloc和free没有构造函数和析构函数。所以在使用的时候不能用来给对象分配空间。 2,不要讲new,delete和malloc和free混合使用,不然可能产生不可预测的错误。
条款5:尽量使用C++风格的注释 1,C的注释规范嵌在被注释代码块内部的注释可能让注释无意间提前结束。