让我们有一个示例程序:
struct Example
{
int* pointer;
Example(int* p) : pointer(p) {}
};
int main()
{
int var = 30;
const Example object(&var);
object.pointer = &var; // error
*object.pointer = var;
}
我知道为什么会出现错误 - 创建 constExample
对象时,pointer
实际上是 const 指针,而不是指向 const 的指针。因此,当分配&var
给object.pointer
它时是不正确的,但分配var
给*object.pointer
作品完全没问题。那么有什么办法可以使这条线:
*object.pointer = var;
不编译?我希望指针指向的值也为 const。换句话说,当创建一个 const 对象时:
const Example object(&var);
我希望 constness 也适用于值本身,而不仅仅是指针:
const int* const pointer; // something like that