显然,将局部变量声明为const,可以防止运行时修改.Const实例变量是静态的(我相信).这是否与const局部变量的性质和用途有关?(例如穿线)
Adr*_*ong 15
A const不是变量,这就是它被称为常量的原因.
sth*_*lik 11
"const"变量必须具有基本类型(例如int,bool).每当源代码中出现"const"变量时(无论是本地变量还是全局变量),此实例都将替换为const值本身.所以:
const int foo = 42;
return foo + 69;
Run Code Online (Sandbox Code Playgroud)
优化后变为:
return 42 + 69
Run Code Online (Sandbox Code Playgroud)
更确切地说:
return 111;
Run Code Online (Sandbox Code Playgroud)
没有线程问题,因为const变量具有原始类型,并且它们仅在编译时存在.
常量不是变量,实际上并不存储在任何地方.因为它没有存储,所以它不是实例成员,并且它不是静态的.
常量只是值的名称.编译代码时,会在使用常量的位置插入值.(如果你使用一个不同的装配宣布为常数.改变常数的声明价值不会改变使用,直到你重新编译使用恒定码值.这具有意义.)
因此,在本地声明的常量与其他任何地方声明的常量完全相同,它只是范围不同.