我可以帮您翻译成中文。需要注意的是,在函数调用的情况下,临时变量只能与非const引用参数绑定。以下是一个例子:
我了解到,当我们抛出异常时,实际传递给catch的是原始异常的副本,即创建了一个临时对象来传递到catch子句。
catch所做的是通过非const引用捕获该异常。这与我在CASE 1中展示的情况相反。
因此,我的问题如下:
1)是否有特定的场景允许将临时对象绑定到非const引用?
2)如果有,请考虑哪些因素来允许这些异常。
class Simple{
public:
int i;
Simple(Simple &f)
{
i = f.i + 1;
}
Simple(int j)
{
i = j;
}
};
int main()
{
Simple f1 = Simple(2); // error no matching call fruit::fruit(fruit)...
return 0;
}
由于我试图将临时对象与非const引用参数绑定,因此会出现错误。
情况2:
try
{
throw e;
}
catch ( exception& e )
{
}
我了解到,当我们抛出异常时,实际传递给catch的是原始异常的副本,即创建了一个临时对象来传递到catch子句。
catch所做的是通过非const引用捕获该异常。这与我在CASE 1中展示的情况相反。
因此,我的问题如下:
1)是否有特定的场景允许将临时对象绑定到非const引用?
2)如果有,请考虑哪些因素来允许这些异常。