gpt4 book ai didi

c++ - 引用在 try catch 中没有按预期工作

转载 作者:行者123 更新时间:2023-11-30 01:26:43 25 4
gpt4 key购买 nike

#include <iostream>
using namespace std;

int main (int argc, char* const argv[]) {
int a = 20;
cout<<"address of a is "<<&a<<endl;
try{
throw a;
}
catch (int& z) {
cout<<"address of z is "<<&z<<endl;
}
return 0;
}

a 的地址与z 的地址不同。这意味着引用在 try catch 中不起作用。如果不是那么为什么编译器没有产生任何错误?上面的代码是什么意思?

最佳答案

当您抛出任何类型的对象时,标准允许编译器根据需要多次复制该对象。因此,在 catch block 中,您可能得不到您抛出的原始对象,取而代之的是另一个对象,即原始对象的拷贝,或者原始对象拷贝的拷贝,等等。

关于c++ - 引用在 try catch 中没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9822541/

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