gpt4 book ai didi

c++ - 为什么复制到的对象必须与复制自的对象具有相同的低级别常量?

转载 作者:太空宇宙 更新时间:2023-11-04 15:35:33 25 4
gpt4 key购买 nike

我是 C++ 的新手,正在尝试学习关键字 const 的概念。

我的问题是为什么复制到(本例中的*p)的对象必须与从(本例中的p3)复制的对象具有相同的低级常量。

我知道它们必须具有相同的低级常量才能使代码有效,但我不明白为什么会这样。

背后的原因是什么?

const int *p2;
const int *const p3 = nullptr;
p2 = p3; //ok
int *p = p3; //error: cannot initialize a variable of type 'int *' with an lvalue of type 'const int *const'.

最佳答案

让我们使用一个接受分配的虚构编译器。

const int a = 1;

const int *const p3 = &a;
const int *p2 = p3; //ok

int *p = p3; //ok too !

*p = 42;

糟糕!我们刚刚修改了a,它是const。那是一张去 UB-Land 的单程票。这就是为什么不能隐式删除 const 限定符的原因。

关于c++ - 为什么复制到的对象必须与复制自的对象具有相同的低级别常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34845852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com