gpt4 book ai didi

C++ 引用和内存

转载 作者:行者123 更新时间:2023-11-28 02:01:46 26 4
gpt4 key购买 nike

我正在写代码,我对引用文献有疑问&:

class A{
private:
int num;
public:
void set(const int& a){num = a;}
void foo(){
int a = 4;
set(a);
}
void print(){
cout << num << endl;
}

};
int main(){
A a;
a.foo();
a.print();
return 0;
}

在这种情况下,变量a 将在foo() 结束时被销毁。 set取引用,所以a的地址和更新num。因此这段代码是错误的吗(num 指向已删除的内存)?或者set,用a?的(不是地址)设置num

我用 anum 地址的 cout 编辑代码,它们是不同的,所以我认为 num 复制了 <a 的强>值。如果我运行代码,似乎一切正常,但我不确定。

最佳答案

您的代码并非无效,因为代码 num = a 获取了 a 的拷贝。另外,set() 在返回对象内存之前被调用,因此每个人都有一个拷贝,不会发生任何无效情况。另外,请记住,num 在类的实例持续时持续存在,所以不要担心删除的内存。

关于C++ 引用和内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39230875/

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