gpt4 book ai didi

c++ - 为什么当我通过引用传递形式参数时,我的原始变量没有改变?

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

我有一个函数可以删除 int* 的 const 属性并更改它指向的变量的值,但是它不起作用,因为我传递了一个变量并在正式引用?

这是我的代码:

#include <bits/stdc++.h>
#include <iostream>
#include <map>
using namespace std;
typedef unsigned char UINT8;

int ll(const int &r)
{
*(const_cast<int *>(&r)) = 5;
// cout<<const_cast<int*> (&r)<<endl;
//*(&r)=5;

cout << r << endl;
}

int main()
{
const int a = 1;

ll(a);

cout << a << endl;
}

我希望函数中显示的值与 main() 中的值相同,但它是不同的。

最佳答案

尝试修改 const 限定对象 a 会导致未定义的行为。语言允许使用 reinterpret_cast 和/或 const_cast 更改引用的类型和/或限定符,但程序员始终有责任确保通过引用访问的对象确实具有适当的类型和限定符。

关于c++ - 为什么当我通过引用传递形式参数时,我的原始变量没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58094100/

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