const :
1.用于常量, const修饰的类型为TYPE的变量value是不可变的
const TYPE ValueName = value; const int a = 1;
2.常量指针和指针常量 见
c++之指针常量和常量指针_小飞侠hello的博客-CSDN博客_c++常量指针参数
3.常量引用 见:C++ 常量引用用法_小飞侠hello的博客-CSDN博客
4.成员函数 const修饰类的成员函数,则该成员函数不能修改类中任何非const成员函数。一般写在函数的最后来修饰。
class A
{
…
void function()const; //常成员函数, 它不改变对象的成员变量.
其他:可以使用const_cast<> 的方式去掉const.
见:c++ 4种新型的类型static_cast、dynamic_cast、reinterpret_cast、const_cast转换运算符_小飞侠hello的博客-CSDN博客
#define
预处理器指令
作用:
1.代替全局常量 #define WINDOW_WIDTH 1920
2.宏函数 #define SQUARE(x) x*x 算不上是函数,因为它所做是文本替换 用反斜杠“\”来告诉程序我们这一行还没有结束,要将下一行的内容并入这一行,缺点是不能有返回值
3.在宏函数里,当#加在一个参数的前面,它会被自动转换为那个给予的参数名的字符串。
#define PRINTOUT_VALUE(var) std::cout<<"The value of "<<#var<<" is: "<<var<<std::endl;
4。##"用于在宏定义中连接两个标识符。常常用于生成一系列结构化相同代码
5.防止代码被编译 #ifdef,#ifndef,#else,和 #endif
const 和#define 的区别
1.编译器处理方式不同:#define 是预处理阶段,const 是编译阶段。
2.类型安全检查不同:#define 不做类型检查,const 有具体的类型,在编译会执行检查。
3.存储方式不同:#define 不会分配内存,存储在代码段,const 会分配内存,存储在常量区。
4.作用域不同:const有作用域的概念,函数内部定义的const变量只能在函数内部使用。而define没有作用域的概念(除非使用ifdef配合),一个函数内定义的宏定义变量可以在另外一个函数中使用