gpt4 book ai didi

c++ - const 引用转换为非常量后的行为

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:43 25 4
gpt4 key购买 nike

我对下面这段代码有些困惑。 b 如何仍然引用 a 但具有不同的值?

#include <iostream>
using namespace std;
int main()
{
const int a = 5;
const int &b = a;
++(int&)b;
cout << a << endl;//returns 5
cout << b << endl;//returns 6
cout << "mem a:" << &a << endl; //returns 0x61ff18
cout << "mem b:" << &b << endl; //returns 0x61ff18
return 0;
}

最佳答案

此行为未定义。

您可以合法地从非常量对象的常量引用中强制转换为常量;但是,从引用真实 const 的引用中转换为 const-ness 会导致未定义的行为。

在这种情况下,编译器似乎创建了一个内存位置来存储 5,以便为您提供一个可以引用 b 的位置,而变量 a 本身被优化为常量。您的代码非法修改了 b 引用的位置,生成了 6,而行

cout << a << endl;

优化成

cout << '5' << endl;

所以它仍然生成 5

关于c++ - const 引用转换为非常量后的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42748579/

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