const这些天我对关键词非常恼火,因为我对它并不熟悉.我有一个存储所有const指针的向量vector<const BoxT<T> *> *Q_exclude,并且在另一个类的构造函数中,我需要将此队列中的一个元素作为参数传入并将其分配给非const成员.我的问题是:
如何将const变量分配给非const变量?我知道这没有意义,因为毕竟const是一个const,不应该被改变.但是在这个过程中必须改变那个恼人的成员变量REALLY!我也可能会将向量中的数据类型更改为非const,但这样做太多了.或者有谁知道如何避免这种情况?
我试图更改一个变量的值,该变量定义为int const,如下所示.
const int w = 10;
int* wp = const_cast <int*> (&w);
*wp = 20;
Run Code Online (Sandbox Code Playgroud)
w的值没有改变,即使在赋值之后仍然是10,尽管它表明w和wp都指向同一个内存位置.但是我可以更改w的值,如果在声明时定义如下
int i = 10;
const int w = i;
Run Code Online (Sandbox Code Playgroud)
如果我改变i的声明使其成为常量
const int i = 10;
Run Code Online (Sandbox Code Playgroud)
w的值不会改变.
在第一种情况下,为什么w的值没有改变,即使w和wp指向相同的内存位置[这是我打印地址时的印象]
与编译器有什么不同,它以不同的方式处理这两种情况?
有没有办法确保w不会失去常数,无论它的定义方式如何?