Edu*_*yan 1 c++ reference const-cast
请考虑以下代码:
我声明一个新的引用结束赋值给一个via const_cast.然后我只是增加参考值打印地址和值.
#include <iostream>
using namespace std;
int main()
{
const int a = 7;
int &b = const_cast<int&>(a);
++b;
cout<<"Addresses "<<&a<<" "<<&b<<endl;
cout<<"Values "<<a<<" "<<b<<endl;
}
//output
Addresses 0x7fff11f8e30c 0x7fff11f8e30c
Values 7 8
Run Code Online (Sandbox Code Playgroud)
如何在同一地址中有2个不同的值?
修改常量对象会产生未定义的行为,因此您的程序可以(原则上)执行任何操作.
保持此行为未定义的一个原因是允许优化用其值替换常量变量(因为您已声明该值永远不会更改).这就是这里发生的事情:在编译时a被替换为值7,因此无论你在运行时尝试做什么,都将保留该值.
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |