C++中const的用处,求详解
C++中const的用途,求详解

------解决思路----------------------
首先const编译器会做检查,不允许你在C/C++代码中做更改,汇编则没法检查。其次你对第二个100的疑问,因为编译器优化了代码,他直接就std::cout << 100 << std::endl;,没有再从内存取值,而你指针指向则重新从内存取值。
------解决思路----------------------
volatile const int a = 100 这样加上就不会有问题了
------解决思路----------------------
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
------解决思路----------------------
修改 const 对象导致未定义行为,不要写这样的程序。
------解决思路----------------------
const变量不允许被修改,如果你硬性使用汇编要修改也没办法,呵呵
------解决思路----------------------
const只是编译器的const
不是内嵌汇编器的const
更不是CPU的const
------解决思路----------------------
由于a是const的,所以在编译的时候,需要使用a值的地方直接被编译器替换为100,也就是不查看内存
但a的确是可以修改的,如
__asm{
mov eax,5
mov a,eax
}
int main()
{
const int a = 100;
std::cout << a << std::endl;
__asm{
mov eax,5
mov a,eax
}
std::cout << a << std::endl;
int* b = (int*)&a;
std::cout << *b << std::endl;
getchar();
return 0;
}
------解决思路----------------------
首先const编译器会做检查,不允许你在C/C++代码中做更改,汇编则没法检查。其次你对第二个100的疑问,因为编译器优化了代码,他直接就std::cout << 100 << std::endl;,没有再从内存取值,而你指针指向则重新从内存取值。
------解决思路----------------------
volatile const int a = 100 这样加上就不会有问题了
------解决思路----------------------
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
------解决思路----------------------
修改 const 对象导致未定义行为,不要写这样的程序。
------解决思路----------------------
const变量不允许被修改,如果你硬性使用汇编要修改也没办法,呵呵
------解决思路----------------------
const只是编译器的const
不是内嵌汇编器的const
更不是CPU的const
------解决思路----------------------
由于a是const的,所以在编译的时候,需要使用a值的地方直接被编译器替换为100,也就是不查看内存
但a的确是可以修改的,如
__asm{
mov eax,5
mov a,eax
}