const value
经常在编程中使用。它能够为程序员提供保障,即该值将来不会改变。然而,这并没有得到完全的执行。因此,有时会导致微妙的错误,这些错误非常难以解决。例如:
int a = 1;
const int& b = a; // I promise I will not change
a = 3; // I am a liar, I am now 3
cout << b; // As I will now show 3
有时候我们也可以通过其他方式来更改const
常量的值。其中一些方式相当复杂,需要大量的代码,而这些代码往往会在其他代码段中丢失,从而导致错误。
那么有人能详细介绍一下更改const value
的可能方式吗?如果你不知道所有方式也不用担心(包括我自己),只要告诉我们你所了解的所有方式就可以了!毕竟我们只能给出我们所掌握的内容!
a = 3
并不是谎言,因为a
是非常量变量。而const_cast<int&>(b) = 3;
则是谎言。 - James Adkisonb
声明为常量而不是a
,如果你执行b=3
,那么它将无法编译。 - EdChumb
的值确实改变了。这使得假设b
不会改变无效。我知道我以一种糟糕的方式滥用了漏洞。这确实导致了一个微妙的错误。 - Existent