笔记2
1. 明白在C++中如何使用C。
C++继承了很多C语言的特性,但是有一些还是没有继承到,或者有改进。
C++和C语言的编译和链接的方式不同,例如对应
int Function(int a, float b);
这样的函数,C编译器得到的符号是_Function,而C++特别强调类型安全,因此编译后的符号可能是_Function_int_float这样的形式。
给予以上的原因,C++使用了extern "C“这样的链接指示,来协调C++中使用C语言代码或库。
2. 使用memcpy()等函数时要小心。
主要的原因是C++中的多态引入了虚函数表,使得C++中的对象的数据是分散的,而memcpy()这类函数只能处理连续的数据对象。
3. 尽量使用new/delete来代替malloc/free。
原因主要有几点:
1) new/delete可以调用构造函数和析构函数;
2) new之后不需要再强制转换类型;
3) new失败会有回调函数,mallloc失败直接返回NULL。
4. 关于输出,建议使用#include <iostream>,cout <<。
然而实际的项目中,应该都有自己包装的输出函数吧?
5. 尽量使用C++风格的强制转换。
6. 尽量使用const/enum/inline替换#define。
关于enum有一个有意思的例子:
class CStudent {
private:
enum {NUM_LESSONS = 5};
int scores[NUM_LESSONS];
};
这里使用了enum代替了原来#define做的事情。
7. 用引用替代指针。