发布网友 发布时间:2024-09-28 18:05
共1个回答
热心网友 时间:2024-09-28 18:40
#define与static、const不同,属于预处理器的宏。预处理器在编译前执行,进行字符串替换,不遵循语言语法。宏定义的内容直接插入。
例如:
预处理器替换后,编译器将认为你定义了一个名为*、类型为*的变量。
const代表constant,意为常数或常量。用于修饰变量,表示其不可修改;用于指针,表示指针指向的对象不可变;用于方法,表示该方法不会改变对象。
static含义复杂,有三种含义:
应用于全局变量时,表示每个编译单元实例化变量。若分别编译foo.cpp与bar.cpp后链接,全局变量a将有两份,分别由函数各自操作。
应用于函数内局部变量,表示其生存周期为全局,但在函数内可见。每次函数调用,将获得不同的int值。初始赋值操作仅在首次调用时执行。
应用于类成员时,表示成员或方法属于类而非对象实例。每个Foo实例共享一个int a,通过Foo::bbb()调用bbb方法。