如何理解c++中的关键字static,const,以及#define在定义

如题所述

#define与static、const不同,属于预处理器的宏。预处理器在编译前执行,进行字符串替换,不遵循语言语法。宏定义的内容直接插入。

例如:

预处理器替换后,编译器将认为你定义了一个名为fuck、类型为fuck的变量。

const代表constant,意为常数或常量。用于修饰变量,表示其不可修改;用于指针,表示指针指向的对象不可变;用于方法,表示该方法不会改变对象。

static含义复杂,有三种含义:

应用于全局变量时,表示每个编译单元独立实例化变量。若分别编译foo.cpp与bar.cpp后链接,全局变量a将有两份,分别由函数各自操作。

应用于函数内局部变量,表示其生存周期为全局,但在函数内可见。每次函数调用,将获得不同的int值。初始赋值操作仅在首次调用时执行。

应用于类成员时,表示成员或方法属于类而非对象实例。每个Foo实例共享一个int a,通过Foo::bbb()调用bbb方法。
温馨提示:内容为网友见解,仅供参考
无其他回答

如何理解c++中的关键字static,const,以及#define在定义
define与static、const不同,属于预处理器的宏。预处理器在编译前执行,进行字符串替换,不遵循语言语法。宏定义的内容直接插入。例如:预处理器替换后,编译器将认为你定义了一个名为fuck、类型为fuck的变量。const代表constant,意为常数或常量。用于修饰变量,表示其不可修改;用于指针,表示指针指向的对...

static,const,volatile,define关键字的作用与区别
用const比用#define要好:因为#define是属于预处理器的语法,只是简单地进行宏替换,而const是C++编译器的语法,能提供类型检查以及调试信息。这样#define就很容易出问题,即“边际问题”或者说是“括号问题”。volatile作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次从内存中重新读值。

c++关键字及其含义
1、 inline,定义内联函数,该关键字是基于定义的。如果只在函数声明时给出inline,则函数不会被认为是内联函数,所以必须在函数定义的地方也加上inline。2、const,定义常量成员,包括const数据成员和const成员函数,const数据成员必须也只能通过构造函数的初始化列表进行初始化。3、mutable,这个关键字的引...

怎样理解extern,const,static的含义和他们之间的关系?
这三个限制作用域的关键字的区别总的来说是这样的:全局变量,整个应用程序下的所有文件;extern,必须是在都声明的情况下使用同一个变量;static,在单个文件范围内使用。b、用于c,C++之间互相调用函数时使用的。当C++想调用c编写的lib或dll里的文件里的函数时就要使用extern关键字。因为在编译后c和C++编...

一文带你了解static 和const
本文将深入解析C++中的两个关键修饰符:static和const,帮助理解它们的作用和用法。静态修饰符(static)静态修饰符的主要作用是控制变量的存储方式和可见性。它指示编译器将变量存储在静态存储区,而非栈空间。这解决了函数内局部变量值持久的问题,同时保持了其作用范围不变。对于类的静态成员,它们提供了...

static const和const static的区别
对于C\/C++语言来讲,const就是只读的意思,只在声明中使用;static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内...

c++ const static和static const有什么区别?
const 、static都是限定词 const 表示所修饰的对象不能被改变 static 分几中情况。1。限定定义类成员时表明该成员是所有该类对象共享的,只有一个,而不属于某个特定的对象。所以要这样引用 classname::varname;2。限定非类成员的变量时,只定义一次,忽略重复的定义。相当于全局变量,cons...

C++中.const 与#define都是定义全局变量的吗?
define只是预编译指令,也就是在编译器编译之前,会把代码里面除了""中的pi外的pi都变成3.1415926,也就是说,编译器是看不到pi这个符号的。而const定义是带有类型的,定义的是变量,它有实际内存,只是这个内存是不可以更改的。所以从C++中提倡使用const变量,而不用#define ...

c++ const和static有什么区别?
static的作用是把一个变量(这里的变量和上面说的概念一样,都是泛指)设置为“静态”。一般情况下,我们在子程序中定义的变量,在这个子程序运行 结束的时候都会被销毁,其值就丢失了。如果用了static,则这个变量的值在子程序结束后依然被保留 。这个变量是否被销毁我不知道,但其值肯定被保留了。当...

const和static const的区别
在C\/C++编程中,const关键字用于声明只读变量,其值在声明时设定后就不能再被修改。相比之下,static const则具有更丰富的含义,它结合了作用域和存储方式的特点。首先,对于局部变量,static const将其存储方式设置为静态存储,这意味着每次函数调用时,它的初始值将保留为上一次调用后的值,且调用结束...

相似回答
大家正在搜