#include <iostream>
using namespace std;
int main() {
const int N = 22;
int * pN = const_cast<int*>(&N);
*pN = 33;
cout << N << '\t' << &N << endl;
cout << *pN << '\t' << pN << endl;
}
Run Code Online (Sandbox Code Playgroud)
22 0x22ff74
33 0x22ff74
为什么同一地址有两个不同的值?
我经常发现自己希望对象的成员变量可以是 const,但系统允许在构造后初始化该 const 变量。有没有一种机制可以让我这样做?
为了澄清这一点,这里有一个例子:
class A
{
public:
A(){}
initialize(int x) { c = x; }
private:
const int c;
}
Run Code Online (Sandbox Code Playgroud)
我希望能够做这样的事情。我在构造时没有这些信息,所以我不能简单地将初始化移动到构造函数的初始化列表中。