Day2知识点:
1. C语言中malloc free是函数,C++中new free是关键字。
2. 宏函数,一般函数,内联函数的区别与联系。
a) 宏函数:内嵌到调用代码中去,避免了函数调用的开销,代码段空间增大,但是由于宏函数的处理发生在预 处理阶段,没有类型检查语法检测,如:
#define sqr(x) ((x)*(x))
b) 一般函数:优点:高度抽象,避免重复开发,类型检查;缺点: 压栈与出栈,带来开销。
c) 内联函数:介于宏函数与一般函数之间,避免入栈与出栈的开销,但会增加代码段空间。
3.
a) static_cast:当双方中至少一方可以隐式转换时使用。在一个方向上可以作隐式转换,在另外一个方向上就可以作静态转换
int *p; void *q;
p = static_cast<int*>(q); //int*类型可以转化为void*,但是void*类型不能直接转化成int*类型
b) reinterpret_cast: 在双方向上都不可以隐式类型转换的(如char*p与int *q),则需要重解释类型转换:
int x = 0x12345648;
char *p = reinterpret_cast<char*>(&x);
c) const_cast:const的值是不可改变的(若可以改变则是未定义的),const_cast只能用于指针与引用:
const_int a = 19;
int &ra = const_cast<int&>(a);
4. 宏,在预处理阶段发生了替换,如:
#define N 200;
const int a = 200; //在编译阶段发生替换
5. 命名空间的定义:对全局空间的再度划分
namespace 空间名{int x;int y};
using namespace 空间名; //使用全部命名空间
using 空间名::x; //使用命名空间中的一部分